Реферат Курсовая Конспект
Перенаправление ввода/вывода и конвейеризация композиция команд - раздел Политика, Оглавление 61 Командный Интерпретатор Windows. 2 1.1 Запуск...
|
Оглавление
61 Командный интерпретатор Windows. 2
1.1 Запуск оболочки cmd.exe. 2
1.2 Внутренние и внешние команды. Структура команд. 2
1.3 Перенаправление ввода/вывода и конвейеризация (композиция) команд. 4
1.4 Команды MORE и SORT. 5
1.5 Условное выполнение и группировка команд. 7
1.6 Примеры команд для работы с файловой системой. 8
1.6.1 Пути к объектам файловой системы.. 8
1.6.2 Команда CD.. 9
1.6.3 Команда COPY.. 9
1.6.4 Команда XCOPY.. 11
1.6.5 Команда DIR.. 13
1.6.6 Команды MKDIR и RMDIR.. 15
1.6.7 Команда DEL.. 16
1.6.8 Команда REN.. 16
1.6.9 Команда MOVE.. 16
2 Командные файлы.. 17
2.1 Назначение. 17
2.2 Вывод сообщений и дублирование команд. 18
2.3 Использование параметров командной строки. 19
2.4 Работа с переменными среды.. 21
2.4.1 Получение значения переменной. 21
2.4.2 Преобразования переменных как строк. 22
2.4.3 Операции с переменными как с числами. 23
2.4.4 Локальные изменения переменных. 24
2.4.5 Связывание времени выполнения для переменных. 24
2.5 Приостановка выполнения командных файлов. 25
2.6 Вызов внешних командных файлов. 26
2.7 Операторы перехода. 26
2.8 Операторы условия. 28
2.8.1 Проверка значения переменной. 28
2.8.2 Проверка существования заданного файла. 30
2.8.3 Проверка наличия переменной среды.. 31
2.8.4 Проверка кода завершения предыдущей команды.. 31
2.8.5 Проверка версии реализации расширенной обработки команд. 32
2.9 Организация циклов. 33
2.9.1 Цикл FOR … IN … DO …... 33
2.9.2 Цикл FOR /D … IN … DO …... 34
2.9.3 Цикл FOR /R … IN … DO …... 35
2.9.4 Цикл FOR /L … IN … DO …... 35
2.9.5 Цикл FOR /F … IN … DO …... 37
2.9.6 Циклы и связывание времени выполнения для переменных. 40
3 Задание на лабораторную работу. 41
4 Справка по командам для выполнение задания. 42
Командный интерпретатор Windows.
Примеры команд для работы с файловой системой
Команда CD
Текущий каталог можно изменить с помощью команды
CD [диск:][путь]
Путь к требуемому каталогу указывается с учетом приведенных выше замечаний. Например, команда CD выполняет переход в корневой каталог текущего диска. Если запустить команду CD без параметров, то на экран будут выведены имена текущего диска и каталога.
Файлов 533 647 байт
Папок 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
Файлов 533 647 байт
Templt02.dat
UNINST1.000
Hilite.dat
Templt01.dat
UNINST0.000
Ttable.dat
Aditor.exe
Readme.txt
Aditor.hlp
Текстовый файл.txt
Команда DEL
Удалить один или несколько файлов можно с помощью команды
DEL [диск:][путь]имя_файла [ключи]
Для удаления сразу нескольких файлов используются групповые знаки ? и *. Ключ /S позволяет удалить указанные файлы из всех подкаталогов, ключ /F – принудительно удалить файлы, доступные только для чтения, ключ /A[[:]атрибуты] – отбирать файлы для удаления по атрибутам (аналогично ключу /A[[:]атрибуты] в команде DIR ).
Командные файлы
Вывод сообщений и дублирование команд
По умолчанию команды пакетного файла перед исполнением выводятся на экран. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется).
Например,
REM Следующие две команды будут дублироваться на экране …
DIR C:
ECHO OFF
REM А остальные уже не будут
DIR D:
Для восстановления режима дублирования используется команда ECHO ON. Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:
ECHO ON
REM Команда DIR C: дублируется на экране
DIR C:
REM А команда DIR D: - нет
@DIR D:
В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды
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
REM Добавление сообщения в файл report.txt в случае
REM удачного завершения копирования
IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report.txt
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 — пустая строка.
Пример. Пусть командный файл my.bat вызван из командной строки следующим образом:
Таблица 2. Операторы для заменяемых параметров
Операторы | Описание |
%~Fn | Переменная %n расширяется до полного имени файла |
%~Dn | Из переменной %n выделяется только имя диска |
%~Pn | Из переменной %n выделяется только путь к файлу |
%~Nn | Из переменной %n выделяется только имя файла |
%~Xn | Из переменной %n выделяется расширение имени файла |
%~Sn | Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла |
%~$PATH:n | Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку. Естественно, здесь переменную PATH можно заменить на любое другое допустимое значение |
Данные синтаксические конструкции можно объединять друг с другом, например:
%~DPn — из переменной %n выделяется имя диска и путь,
%~NXn — из переменной %n выделяется имя файла и расширение.
Пример. Пусть мы находимся в каталоге C:TEXT и запускаем пакетный файл с параметром Рассказ.doc ( %1=Рассказ.doc ). Тогда применение операторов, описанных в табл. 2, к параметру %1 даст следующие результаты:
%~F1=C:TEXTРассказ.doc
%~D1=C:
%~P1=TEXT
%~N1=Рассказ
%~X1=.doc
%~DP1=C:TEXT
%~NX1=Рассказ.doc
Получение значения переменной
Для получения значения определенной переменной среды нужно имя этой переменной заключить в символы %. Например:
ECHO OFF
CLS
REM Создание переменной MyVar
SET MyVar=Привет
REM Изменение переменной
SET MyVar=%MyVar%!
ECHO Значение переменной MyVar: %MyVar%
REM Удаление переменной MyVar
SET MyVar=
ECHO Значение переменной WinDir: %WinDir%
При запуске такого командного файла на экран выведется строка
Значение переменной MyVar: Привет!
Значение переменной WinDir: C:WINDOWS
Операции с переменными как с числами
При включенной расширенной обработке команд (этот режим в Windows XP используется по умолчанию) имеется возможность рассматривать значения переменных среды как числа и производить с ними арифметические вычисления. Для этого используется команда SET с ключом /A.
Пример пакетного файла add.bat, складывающего два числа, заданных в качестве параметров командной строки, и выводящего полученную сумму на экран:
ECHO OFF
REM В переменной M будет храниться сумма
SET /A M=%1+%2
ECHO Сумма %1 и %2 равна %M%
REM Удалим переменную M
SET M=
Вызов внешних командных файлов
Из одного командного файла можно вызвать другой, просто указав его имя. Например:
ECHO OFF
CLS
REM Вывод списка log-файлов
DIR C:*.log
REM Передача выполнения файлу f.bat
F.bat
COPY A:*.* C:
PAUSE
Однако в этом случае после выполнения вызванного файла управление в вызывающий файл не передается, то есть в приведенном примере команда COPY A:*.* C:(и все следующие за ней команды) никогда не будет выполнена.
Для того, чтобы вызвать внешний командный файл с последующим возвратом в первоначальный файл, нужно использовать специальную команду CALL файл
Например:
ECHO OFF
CLS
REM Вывод списка log-файлов
DIR C:*.log
REM Передача выполнения файлу f.bat
CALL f.bat
COPY A:*.* C:
PAUSE
В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командой CALL (в примере это команда COPY A:*.* C: ).
Операторы перехода
Командный файл может содержать метки и команды GOTO перехода к этим меткам. Любая строка, начинающаяся с двоеточия :, воспринимается при обработке командного файла как метка. Имя метки задается набором символов, следующих за двоеточием до первого пробела или конца строки.
Пример. Пусть имеется командный файл следующего содержания:
ECHO OFF
COPY %1 %2
GOTO Label1
ECHO Эта строка никогда не выполнится
:Label1
Копия-1
Копия-2
Копия-1
Таким образом, подобное использование команды CALL очень похоже на обычный вызов подпрограмм (процедур) в алгоритмических языках программирования.
Операторы условия
С помощью команды IF … ELSE (ключевое слово ELSE может отсутствовать) в пакетных файлах можно выполнять обработку условий нескольких типов. При этом если заданное после IF условие принимает истинное значение, система выполняет следующую за условием команду (или несколько команд, заключенных в круглые скобки), в противном случае выполняется команда (или несколько команд в скобках), следующие за ключевым словом ELSE.
ECHO OFF
ECHO Выполняется файл: %0
ECHO.
ECHO Файл запущен со следующими параметрами...
REM Начало цикла
:BegLoop
IF -%1==- GOTO ExitLoop
ECHO %1
REM Сдвиг параметров
SHIFT
REM Переход на начало цикла
GOTO BegLoop
:ExitLoop
REM Выход из цикла
ECHO.
ECHO Все.
Если запустить primer.bat с четырьмя параметрами:
Primer.bat А Б В Г
то в результате выполнения на экран выведется следующая информация:
Выполняется файл: primer.bat
Файл запущен со следующими параметрами:
А
Б
В
Г
Все.
Рассмотрим теперь оператор IF в следующем виде:
IF [/I] строка1 оператор_сравнения строка2 команда
Синтаксис и значение операторов_сравнения представлены в табл. 3.
Таблица 3. Операторы сравнения в IF
Оператор | Значение |
EQL | Равно |
NEQ | Не равно |
LSS | Меньше |
LEQ | Меньше или равно |
GTR | Больше |
GEQ | Больше или равно |
Пример использования операторов сравнения:
ECHO OFF
CLS
IF -%1 EQL –Вася ECHO Привет, Вася!
IF -%1 NEQ –Вася ECHO Привет, но Вы не Вася!
Ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. Ключ /I можно также использовать и в форме строка1==строка2 команды IF. Например, условие
IF /I DOS==dos …
будет истинным.
REM Вывод сообщения о найденном файле
ECHO Файл '%1' успешно найден.
GOTO :EOF
:NoFileSpecified
REM Файл запущен без параметров
ECHO В командной строке не указано имя файла.
GOTO :EOF
:FileNotExist
REM Параметр командной строки задан, но файл не найден
ECHO Файл '%1' не найден.
Проверка наличия переменной среды
Аналогично файлам команда IF позволяет проверить наличие в системе определенной переменной среды:
IF DEFINED переменная команда1 [ELSE команда2]
Здесь условие DEFINED применяется подобно условию EXISTS наличия заданного файла, но принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена. Например:
@ECHO OFF
CLS
IF DEFINED MyVar GOTO :VarExists
ECHO Переменная MyVar не определена
GOTO :EOF
:VarExists
ECHO Переменная MyVar определена,
ECHO ее значение равно %MyVar%
Раз
Два
Три
Параметр множество в команде FOR задает одну или более текстовых строк, разделенных запятыми, которые вы хотите обработать с помощью заданной команды. Скобки здесь обязательны. Параметр команда [параметры] задает команду, выполняемую для каждого элемента множества, при этом вложенность команд FOR на одной строке не допускается. Если в строке, входящей во множество, используется запятая, то значение этой строки нужно заключить в кавычки. Например, в результате выполнения файла с командами
@ECHO OFF
FOR %%i IN ("Раз,Два",Три) DO ECHO %%i
на экран будет выведено
Раз,Два
Три
Параметр %%переменная представляет подставляемую переменную (счетчик цикла), причем здесь могут использоваться только имена переменных, состоящие из одной буквы. При выполнении команда FOR заменяет подставляемую переменную текстом каждой строки в заданном множестве, пока команда, стоящая после ключевого слова DO, не обработает все такие строки.
Замечание.
Чтобы избежать путаницы с параметрами командного файла %0 — %9, для переменных следует использовать любые символы кроме 0 – 9.
Параметр множество в команде FOR может также представлять одну или несколько групп файлов. Например, чтобы вывести в файл список всех файлов с расширениями txt и prn, находящихся в каталоге C:TEXT, без использования команды DIR, можно использовать командный файл следующего содержания:
@ECHO OFF
FOR %%f IN (C:TEXT*.txt C:TEXT*.prn) DO ECHO %%f >> list.txt
При таком использовании команды FOR процесс обработки продолжается, пока не обработаются все файлы (или группы файлов), указанные во множестве.
2.9.2 Цикл FOR /D … IN … DO …
Следующий вариант команды FOR реализуется с помощью ключа /D:
FOR /D %%переменная IN (набор) DO команда [параметры]
В случае, если набор содержит подстановочные знаки, то команда выполняется для всех подходящих имен каталогов, а не имен файлов. Выполнив следующий командный файл:
@ECHO OFF
CLS
FOR /D %%f IN (C:*.*) DO ECHO %%f
мы получим список всех каталогов на диске C:, например:
C:Arc
C:CYR
C:MSCAN
C:NC
C:Program Files
C:TEMP
C:TeX
C:WINNT
2.9.3 Цикл FOR /R … IN … DO …
С помощью ключа /R можно задать рекурсию в команде FOR:
FOR /R [[диск:]путь] %%переменная IN (набор)
DO команда [параметры]
В этом случае заданная команда выполняется для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа R не указано имя каталога, то выполнение команды начинается с текущего каталога. Например, для распечатки всех файлов с расширением txt в текущем каталоге и всех его подкаталогах можно использовать следующий пакетный файл:
@ECHO OFF
CLS
FOR /R %%f IN (*.txt) DO PRINT %%f
Если вместо набора указана только точка (.), то команда проверяет все подкаталоги текущего каталога. Например, если мы находимся в каталоге C:TEXT с двумя подкаталогами BOOKS и ARTICLES, то в результате выполнения файла:
@ECHO OFF
CLS
FOR /R %%f IN (.) DO ECHO %%f
на экран выведутся три строки:
C:TEXT.
C:TEXTBOOKS.
C:TEXTARTICLES.
2.9.4 Цикл FOR /L … IN … DO …
Ключ /L позволяет реализовать с помощью команды FOR арифметический цикл, в этом случае синтаксис имеет следующий: вид:
FOR /L %%переменная IN (начало,шаг,конец) DO команда [параметры]
Здесь заданная после ключевого слова IN тройка (начало, шаг, конец) раскрывается в последовательность чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) заменяется на (5 4 3 2 1). Например, в результате выполнения следующего командного файла:
@ECHO OFF
CLS
FOR /L %%f IN (1,1,5) DO ECHO %%f
переменная цикла %%f пробежит значения от 1 до 5, и на экране напечатаются пять чисел:
Числа, получаемые в результате выполнения цикла FOR /L, можно использовать в арифметических вычислениях. Рассмотрим командный файл my.bat следующего содержания:
@ECHO OFF
CLS
FOR /L %%f IN (1,1,5) DO CALL :2 %%f
GOTO :EOF
:2
SET /A M=10*%1
ECHO 10*%1=%M%
В третьей строке в цикле происходит вызов нового контекста файла my.bat с текущим значением переменной цикла %%f в качестве параметра командной строки, причем управление передается на метку :2 (см. описание CALL в разделе "Изменения в командах перехода"). В шестой строке переменная цикла умножается на десять, и результат записывается в переменную M. Таким образом, в результате выполнения этого файла выведется следующая информация:
10*1=10
10*2=20
10*3=30
10*4=40
10*5=50
2.9.5 Цикл FOR /F … IN … DO …
Самые мощные возможности (и одновременно самый запутанный синтаксис) имеет команда: FOR с ключом /F:
FOR /F ["ключи"] %%переменная IN (набор)
DO команда [параметры]
Здесь параметр набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбиении его на отдельные строки текста и выделении из каждой строки заданного числа подстрок. Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла (заданной команды).
По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются. Необязательный параметр "ключи" служит для переопределения заданных по умолчанию правил обработки строк. Ключи представляют собой заключенную в кавычки строку, содержащую приведенные в табл. 4 ключевые слова:
Таблица 4. Ключи в команде FOR /F
Ключ | Описание |
EOL=C | Определение символа комментариев в начале строки (допускается задание только одного символа) |
SKIP=N | Число пропускаемых при обработке строк в начале файла |
DELIMS=XXX | Определение набора разделителей для замены заданных по умолчанию пробела и знака табуляции |
TOKENS=X,Y,M-N | Определение номеров подстрок, выделяемых из каждой строки файла и передаваемых для выполнения в тело цикла |
При использовании ключа TOKENS=X,Y,M-N создаются дополнительные переменные. Формат M-N представляет собой диапазон подстрок с номерами от M до N. Если последний символ в строке TOKENS= является звездочкой, то создается дополнительная переменная, значением которой будет весь текст, оставшийся в строке после обработки последней подстроки.
Применение этой команды на примере пакетного файла parser.bat, который производит разбор файла myfile.txt:
@ECHO OFF
IF NOT EXIST myfile.txt GOTO :NoFile
FOR /F "EOL=; TOKENS=2,3* DELIMS=, " %%i IN
(myfile.txt) DO @ECHO %%i %%j %%k
GOTO :EOF
:NoFile
ECHO Не найден файл myfile.txt!
Здесь во второй строке производится проверка наличия файла myfile.txt; в случае отсутствия этого файла выводится предупреждающее сообщение. Команда FOR в третьей строке обрабатывает файл myfile.txt следующим образом:
Пропускаются все строки, которые начинаются с символа точки с запятой ( EOL=; ).
Вторая и третья подстроки из каждой строки передаются в тело цикла, причем подстроки разделяются пробелами (по умолчанию) и/или запятыми ( DELIMS=,).
В теле цикла переменная %%i используется для второй подстроки, %%j — для третьей, а %%k получает все оставшиеся подстроки после третьей.
В нашем примере переменная %%i явно описана в инструкции FOR, а переменные %%j и %%k описываются неявно с помощью ключа TOKENS=. Например, если в файле myfile.txt были записаны следующие три строки:
ААА ББББ ВВВВ,ГГГГГ ДДДД
ЕЕЕЕЕ,ЖЖЖЖ ЗЗЗЗ
;КККК ЛЛЛЛЛ МММММ
то в результате выполнения пакетного файла parser.bat на экран выведется следующее:
ББББ ВВВВ ГГГГГ ДДДД
CLS
ECHO Имена переменных среды:
ECHO.
FOR /F "DELIMS==" %%i IN ('SET') DO ECHO %%i
выведет перечень имен всех переменных среды, определенных в настоящее время в системе.
В цикле FOR допускается применение тех же синтаксических конструкций (операторов), что и для заменяемых параметров (табл. 5).
Таблица 5. Операторы для переменных команды FOR
Операторы | Описание |
%~Fi | Переменная %i расширяется до полного имени файла |
%~Di | Из переменной %i выделяется только имя диска |
%~Pi | Из переменной %i выделяется только путь к файлу |
%~Ni | Из переменной %i выделяется только имя файла |
%~Xi | Из переменной %i выделяется расширение имени файла |
%~Si | Значение операторов N и X для переменной %i изменяется так, что они работают с кратким именем файла |
Если планируется использовать расширения подстановки значений в команде FOR, то следует внимательно подбирать имена переменных, чтобы они не пересекались с обозначениями формата.
Например, если мы находимся в каталоге C:Program FilesFar и запустим командный файл следующего содержания:
@ECHO OFF
CLS
FOR %%i IN (*.txt) DO ECHO %%~Fi
то на экран выведутся полные имена всех файлов
с расширением txt:
C:Program FilesFarContacts.txt
C:Program FilesFarFarFAQ.txt
C:Program FilesFarFar_Site.txt
C:Program FilesFarLicense.txt
C:Program FilesFarLicense.xUSSR.txt
C:Program FilesFarReadMe.txt
C:Program FilesFarregister.txt
C:Program FilesFarWhatsNew.txt
SETLOCAL ENABLEDELAYEDEXPANSION
SET a=
FOR %%i IN (Раз,Два,Три) DO SET a=!a!%%i
ECHO a=%a%
В этом случае на экран будет выведена строка "a=РазДваТри".
Задание на лабораторную работу
Запустить командный интерпретатор cmd
2. В корневом каталоге диска C: создать каталог Work1 и подчиненный ему каталог DOK1. (рис. 1)
2. В корневом каталоге диска C: создать каталог Work2 и подчиненный ему каталог DOK2. (рис. 1)
3. В каталоге Work1 создать файл proba1.txt, содержащий произвольную информацию, а в каталоге Work2 — файл proba2.txt, содержащий произвольную информацию. (рис. 1).
Получить информацию о каталогах и файлах.
– Конец работы –
Используемые теги: Перенаправление, ввода/вывода, конвейеризация, композиция, команд0.056
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Перенаправление ввода/вывода и конвейеризация композиция команд
Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов