1.3.5. Команда DIR
Команда:
DIR
[диск:][путь][имя_файла]
[ключи]используется для вывода информации о содержимом дисков и каталогов. Параметр[диск:][путь] задает диск и каталог, содержимое которого нужно вывести на экран. Параметр [имя_файла] задает файл или группу файлов, которые нужно включить в список.
Например, команда DIR C:\*.bat выведет на экран все файлы с расширением bat в корневом каталоге диска C:. Если задать эту команду без параметров, то выводится метка диска и его серийный номер, имена (в коротком и длинном вариантах) файлов и подкаталогов, находящихся в текущем каталоге, а также дата и время их последней модификации. После этого выводится число файлов в каталоге, общий объем (в байтах), занимаемый файлами, и объем свободного пространства на диске.
Например: Том в устройстве C имеет метку PHYS1_PART2
Серийный номер тома: 366D-6107
Содержимое папки C:\aditor
. <ПАПКА> 25.01.15 17:15 .
.. <ПАПКА> 25.01.15 17:15 ..
HILITE DAT 1 082 18.09.16 18:55 hilite.dat
TEMPLT01 DAT 48 07.08.16 1:00 templt01.dat
TTABLE DAT 357 07.08.16 1:00 ttable.dat
ADITOR EXE 461 312 01.12.15 23:13 aditor.exe
README TXT 3 974 25.01.15 17:26 readme.txt
ADITOR HLP 24 594 08.10.16 23:12 aditor.hlp
ТЕКСТО
1 TXT 0 11.03.15 9:02 Текстовый файл.txt
11 файлов 533 647 байт
2 папок 143 261 696 байт свободно
С помощью ключей команды
DIR
можно задать различные режимы расположения, фильтрации и сортировки. Например, при использовании ключа
/W
перечень файлов выводится в широком формате с максимально возможным числом имен файлов или каталогов на каждой строке.
Например: Том в устройстве C имеет метку PHYS1_PART2
Серийный номер тома: 366D-6107
Содержимое папки C:\aditor
[.] [..] TEMPLT02.DAT UNINST1.000
HILITE.DAT
TEMPLT01.DAT UNINST0.000
TTABLE.DAT ADITOR.EXE
README.TXT
ADITOR.HLP ТЕКСТО
1.TXT
22 11 файлов 533 647 байт
2 папок 143 257 600 байт свободно
С помощью ключа
/A[[:]атрибуты]
можно вывести имена только тех каталогов и файлов, которые имеют заданные атрибуты (
R
—
"Только чтение",
A
— "Архивный",
S
— "Системный",
H
— "Скрытый", префикс "–" имеет значение НЕ). Если ключ
/A
используется более чем с одним значением атрибута, будут выведены имена только тех файлов, у которых все атрибуты совпадают с заданными. Например, для вывода имен всех файлов в корневом каталоге диска C:, которые одновременно являются скрытыми и системными, можно задать команду
DIR C:\ /A:HS а для
вывода всех файлов, кроме скрытых — команду
DIR C:\ /A:-H
Отметим здесь, что атрибуту каталога соответствует буква D, и для того, чтобы, например, вывести список всех каталогов диска C:, нужно задать команду
DIR C: /A:D
Ключ
/O[[:]сортировка] задает порядок сортировки содержимого каталога при выводе его командой DIR. Если этот ключ опущен,
DIR
печатает имена файлов и каталогов в том порядке, в котором они содержатся в каталоге. Если ключ /O задан, а параметр сортировка не указан, то
DIR
выводит имена в алфавитном порядке. В параметре сортировка можно использовать следующие значения:
N
— по имени
(алфавитная),
S
— по размеру (начиная с меньших),
E
— по расширению
(алфавитная),
D
— по дате (начиная с более старых),
A
— по дате загрузки
(начиная с более старых),
G
— начать список с каталогов. Префикс "–" означает обратный порядок. Если задается более одного значения порядка сортировки, файлы сортируются по первому критерию, затем по второму и т.д.
Ключ
/S
означает вывод списка файлов из заданного каталога и его подкаталогов. Ключ
/B
перечисляет только названия каталогов и имена файлов (в длинном формате) по одному на строку, включая расширение.
При этом выводится только основная информация, без итоговой.
Например: templt02.dat
UNINST1.000 hilite.dat templt01.dat
UNINST0.000 ttable.dat aditor.exe readme.txt
23 aditor.hlp
Текстовый файл.txt
1.3.6 Команды MKDIR и RMDIR Для создания нового каталога и удаления уже существующего пустого каталога используются команды MKDIR [диск:]путь и RMDIR
[диск:]путь [ключи] соответственно (или их короткие аналоги MD и RD).
Например:
MKDIR "C:\Примеры"
RMDIR "C:\Примеры"
Команда MKDIR не может быть выполнена, если каталог или файл с заданным именем уже существует. Команда RMDIR не будет выполнена, если удаляемый каталог не пустой.
1.3.7 Команда DEL Удалить один или несколько файлов можно с помощью команды
DEL [диск:][путь]имя_файла [ключи]
Для удаления сразу нескольких файлов используются групповые знаки ? и *. Ключ /S позволяет удалить указанные файлы из всех подкаталогов, ключ /F – принудительно удалить файлы,
доступные только для чтения, ключ /A[[:]атрибуты] – отбирать файлы для удаления по атрибутам (аналогично ключу /A[[:]атрибуты] в команде DIR).
1.3.8 Команда REN Переименовать файлы и каталоги можно с помощью команды
RENAME (REN).
Синтаксис этой команды имеет следующий вид: REN [диск:][путь][каталог1|файл1] [каталог2|файл2]
Здесь параметр каталог1|файл1 определяет название каталога/файла, которое нужно изменить, а каталог2|файл2 задает новое название каталога/файла. В любом параметре команды REN можно использовать групповые символы ? и *. При этом представленные шаблонами символы в параметре файл2 будут идентичны соответствующим символам в параметре файл1. Например, чтобы изменить у всех файлов с расширением txt в текущей директории расширение на doc, нужно ввести такую команду:
REN *.txt *.doc
Если файл с именем файл2 уже существует, то команда REN прекратит выполнение, и произойдет вывод сообщения, что файл уже существует или занят. Кроме того, в команде REN нельзя указать другой диск или каталог для создания результирующих каталога и файла. Для этой цели нужно использовать команду MOVE, предназначенную для переименования и перемещения файлов и каталогов.
24
1.3.9 Команда MOVE
Синтаксис команды для перемещения одного или более файлов имеет
вид:
MOVE [/Y|/–Y] [диск:][путь]имя_файла1[,...] результирующий_файл
Синтаксис команды для переименования папки имеет вид:
MOVE [/Y|/–Y] [диск:][путь]каталог1 каталог2
Здесь параметр результирующий_файл задает новое размещение файла и может включать имя диска, двоеточие, имя каталога, либо их сочетание. Если перемещается только один файл, допускается указать его новое имя. Это позволяет сразу переместить и переименовать файл.
Например, MOVE "C:\Мои документы\список.txt" D:\list.txt.
Если указан ключ /-Y, то при создании каталогов и замене файлов будет выдаваться запрос на подтверждение. Ключ /Y отменяет выдачу такого запроса.
2 МЕТОДИКА ВЫПОЛНЕНИЯ
1. Ознакомиться с теоретическими сведениями.
2. Запустить интерпретатор командной строки
3. Увеличить размер окна интерпретатора и задать цвет фона и цвет шрифта (рекомендуется синий фон и белый шрифт).
4. Создать список фамилий студентов группы, используя пример 1.
Отсортировать список в алфавитном порядке и сохранить его в новом файле.
Замечание 1. При создании текстового файла интерпретатор командной строки использует кодировку кириллица (DOS). Поэтому рекомендуется переназначить вывод в файл с расширением .txt, а для просмотра содержимого файла использовать Internet Explorer, указав вид кодировки кириллица (DOS). Пример вывода содержимого текстового файла приведен на рис. 3.
Замечание 2. Интерпретатор хранит историю введенных команд в буфере
(размером 50 строк). Для просмотра содержимого буфера используйте клавиши клавиатуры СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ. Полученную команду можно отредактировать и выполнить снова.
25
Рис.3 – вывод содержимого текстового файла, полученного с помощью команды DIR, в IE в кодировке кириллица (DOS)
5.
Создать текстовый файл, содержащий справочные сведения по командам DIR, COPY и XCOPY.
6. Вывести содержимое указанного в табл.2 каталога по указанному формату на экран и в файл.
Таблица 2.
Варианты заданий для бригад
Номера бригад
Имя каталога
Что выводить
Сортировать по
Атрибуты фай-лов и каталогов
1, 6
%Windows%
Только файлы
По размеру
Системный
2, 7
%Windows%
Файлы и подкаталоги
По дате
Скрытый
3, 8
%Windows%
Только подкаталоги
Именам
Только чтение
26
Номера бригад
Имя каталога
Что выводить
Сортировать по
Атрибуты фай-лов и каталогов
4, 9
%Windows% и все подкаталоги
Только файлы bmp
По размеру
Только чтение
5, 10
%Windows% и все подкаталоги
Только файлы jpg
Именам
Любые
7. Скопировать все имеющиеся в каталоге Windows растровые графические файлы в каталог WinGrafika на диске С:. Если диск С: недоступен, использовать любой другой доступный диск.
8. Скопировать все имеющиеся в каталоге Windows исполняемые файлы в каталог WinEx на диске С:. Если диск С: недоступен, использовать любой другой доступный диск.
3 КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Достоинства и недостатки интерфейса командной строки.
2. Инструменты командной строки для автоматизации работы в ОС
Microsoft Windows.
3. Настраиваемые свойства интерпретатора.
4. Различие между внутренними и внешними командами. Примеры внешних и внутренних команд.
5. Структура команды интерпретатора.
6. Получение информации о конкретной команде.
7. Групповые символы (шаблоны) и их использование.
8. Перенаправление ввода/вывода и конвейеризация команд.
9. Условное выполнение и группировка команд.
10. Назначение символов &, &&, || и () .
11. Команды для работы с файловой системой – названия и возможности.
12. Достоинства и недостатки команд COPY и XCOPY.
13. Назначение команды ECHO и примеры ее использования.
14. Команда DIR и ее возможности.
15. В какой кодировке интерпретатор выводит информацию и как получить читаемую твердую копию?
27
ЛАБОРАТОРНАЯ РАБОТА №2 ИНТЕРПРЕТАТОР КОМАНДНОЙ СТРОКИ ОС MS WINDOWSЧасть 2. Язык интерпретатора и командные файлы
Цель работы – знакомство с языком интерпретатора командной строки
ОС MS Windows и командными файлами
1 КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ 1.1 Язык интерпретатора Cmd.exe. Командные файлы Язык оболочки командной строки (shell language) в Windows реализован в виде командных (или пакетных) файлов.
Командный файл в
Windows — это обычный текстовый файл с расширением bat или cmd, в котором записаны допустимые команды ОС (как внешние, так и внутренние), а также некоторые дополнительные инструкции и ключевые слова, придающие командным файлам некоторое сходство с программами, написанными на языке программирования. Например, если записать в файл deltmp.bat следующие команды:
C:\
CD %TEMP%
DEL /F *.tmp и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe), то мы удалим все файлы во временной директории Windows. Таким образом, исполнение командного файла приводит к тому же результату, что и последовательный ввод записанных в нем команд. При этом не проводится никакой предварительной компиляции или проверки синтаксиса кода; если встречается строка с ошибочной командой, то она игнорируется.
Очевидно, что если приходится часто выполнять одни и те же действия, то использование командных файлов может сэкономить много времени.
1.1.1 Вывод сообщений и дублирование команд По умолчанию команды пакетного файла перед исполнением выводятся на экран, что выглядит не очень эстетично. С помощью команды ECHO OFF
можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется).
Например,
REM Следующие две команды будут дублироваться на экране …
:: эта строка – такой же комментарий, как и предыдущая
DIR C:\
ECHO OFF
:: А остальные уже не будут
28
DIR D:\
Для восстановления режима дублирования используется команда
ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:
ECHO ON
:: Команда DIR C:\ дублируется на экране
DIR C:\
:: А команда DIR D:\ — нет
@DIR D:\
Таким образом, если поставить в самое начало файла команду
@ECHO OFF,то это решит все проблемы с дублированием команд.
В пакетном файле можно выводить на экран строки с сообщениями.
Делается это с помощью команды ECHO сообщение
Например:
@ECHO OFF
ECHO Привет!
Команда ECHO. (точка должна следовать непосредственно за словом "ECHO") выводит на экран пустую строку. Например
:
@ECHO OFF
ECHO Привет!
ECHO.
ECHO Пока!
Часто бывает удобно для просмотра сообщений, выводимых из пакетного файла, предварительно полностью очистить экран командой
CLS.
Используя механизм перенаправления ввода/вывода (символы > и
>>), можно направить сообщения, выводимые командой ECHO, в определенный текстовый файл. Например:
@ECHO OFF
ECHO Привет! > hi.txt
ECHO Пока! >> hi.txt
С помощью такого метода можно, скажем, заполнять файлы- протоколы с отчетом о произведенных действиях. Например:
@ECHO OFF
REM Попытка копирования
XCOPY C:\PROGRAMS D:\PROGRAMS /s
:: Добавление сообщения в файл report.txt в случае удачного завершения копирования
IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt
29
1.1.2 Использование параметров командной строки
При запуске пакетных файлов в командной строке можно указывать произвольное число параметров, значения которых можно использовать внутри файла. Это позволяет, например, применять один и тот же командный файл для выполнения команд с различными параметрами.
Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9
— значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 – %9 замещаются пустыми строками. Рассмотрим следующий пример. Пусть имеется командный файл copier.bat следующего содержания:
@ECHO OFF
CLS
ECHO Файл %0 копирует каталог %1 в %2
XCOPY %1 %2 /S
Если запустить его из командной строки с двумя параметрами, например copier.bat C:\Programs D:\Backup то на экран выведется сообщение
Файл copier.bat копирует каталог C:\Programs в D:\Backup и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.
При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды
SHIFT
, которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение
%2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 — пустая строка.
Пример 1. Пусть командный файл my.bat вызван из командной строки следующим образом: my.bat p1 p2 p3
Тогда %0=my.bat, %1=p1, %2=p2, %3=p3, параметры %4 – %9 являются пустыми строками. После выполнения команды SHIFT значения замещаемых параметров изменятся следующим образом: %0=p1, %1=p2,
%2=p3, параметры %3 – %9 – пустые строки.
При включении расширенной обработки команд
SHIFT поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть числом от 0 до 9.
Например, в следующей команде SHIFT /2 параметр %2 заменяется на %3,
30
%3 на %4 и т.д., а параметры %0 и %1 остаются без изменений.
Команда, обратная SHIFT (обратный сдвиг), отсутствует. После выполнения SHIFT уже нельзя восстановить параметр (%0), который был первым перед сдвигом. Если в командной строке задано больше десяти параметров, то команду SHIFT можно использовать несколько раз.
В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в (табл. 1).
Таблица 1.
Операторы для заменяемых параметров
Операторы Описание
%Fn
Переменная
%n расширяется до полного имени файла
%Dn
Из переменной
%n выделяется только имя диска
%Pn
Из переменной
%n выделяется только путь к файлу
%Nn
Из переменной
%n выделяется только имя файла
%Xn
Из переменной
%n выделяется расширение имени файла
%Tn
Возвращается дата и время создания (модификации) файла
%Zn
Возвращается размер файла в байтах
%$PATH:n
Проводится поиск по каталогам, заданным в переменной среды
PATH
, и переменная
%n заменяется на полное имя первого найденного файла. Если переменная
PATH
не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную
PATH
можно заменить на любое другое допустимое значение
Данные синтаксические конструкции можно объединять друг с другом, например:
%DPn — из переменной %n выделяется имя диска и путь,
%NXn — из переменной %n выделяется имя файла и расширение.
Пример 2. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc (%1=Рассказ.doc). Размер файла
2150 байт, дата создания 12.12.2015, время -12:55.
Тогда применение операторов, описанных в табл. 1, к параметру %1 даст следующие результаты:
%F1=C:\TEXT\Рассказ.doc
%D1=C:
31
%P1=\TEXT\
%N1=Рассказ
%X1=.doc
%DP1=C:\TEXT\
%NX1=Рассказ.doc
%T1=12.12.2009 12:55
%Z1=2150
1.1.3 Работа с переменными среды Внутри командных файлов можно использовать так называемые