Смекни!
smekni.com

Возможности командных файлов (стр. 2 из 3)

Set переменная = значение

При выполнении этой команды MS-DOS преобразует в имени переменной, но не в ее значении, все строчные буквы в заглавные.

В командных файлах можно обратиться к значению какой-либо переменной окружения, для этого следует указать ее имя, обрамленное с обеих сторон знаками процента.

Пример №1. Для вывода на экран значения переменной окружения Temp в командном файле можно воспользоваться такой командой:

Echo %Temp%

Пример №2. Чтобы удалить все временные файлы в каталоге, заданном в переменной окружения Temp, в командном файле можно воспользоваться такой командой:

Del %Temp%\*.*

5. Управление отображением команд на экране

5.1. Команды ‘Echo on’ и ‘Echo off’

По умолчанию команды пакетного файла выводятся на экран перед выполнением. Если в него вставить команду ‘Echo off’, тогда выполняемые за ней команды не будут выводиться на экран. Команда ‘Echo on’ включает режим вывода выполняемых команд на экран. Команда Echo без параметров выводит на экран сообщение о том, включен или выключен режим дублирования команд на экран.

5.2. Командный префикс @

Можно избежать вывода (дублирования) на экран любой отдельной строки командного файла. Для этого надо поставить в начале этой строки символ ‘@’. В частности, можно избежать выдачи на экран команды ‘Echo off’, поставив перед ней символ ‘@’: ‘@Echo off’.

Замечания:

1. Обычно в качестве первой строки командного файла используется команда ‘@Echo off’. При этом строки командного файла на экран не выводятся.

2. После выдачи команды ‘@Echo off’ иногда полезно использовать команду Cls – “очистка экрана”, чтобы сделать более удобным просмотр сообщений, выводимых из командного файла.

6. Вывод сообщений в командных файлах

6.1. Команда Echo

Данная команда позволяет выдавать из командного файла сообщения на экран. Формат команды:

Echo сообщение

Указанное сообщение выводится на экран даже тогда, когда режим вывода исполняемых команд на экран выключен командой ‘Echo off’. Сообщение не может быть пустым или равным зарезервированному слову ‘on’ или ‘off’, так как команды ‘Echo on’ и ‘Echo off’ управляют режимом вывода исполняемых команд на экран, а команда Echo без параметров сообщает, включен или выключен режим дублирования команд на экран.

Замечания.

1. В сообщении не следует употреблять символов ‘<’, ‘>’ и ‘|’ - они интерпретируются как символы перенаправления ввода-вывода.

2. Перед командой ‘Echo сообщение’ желательно выполнить команду ‘@Echo off’, чтобы сообщение не выводилось на экран дважды.

6.2. Получение звукового сигнала

С помощью команды Echo можно получить звуковой сигнал компьютера. Для этого следует в выводимое сообщение включить символ с кодом 7. Это можно сделать, нажав клавишу Alt и, не отпуская ее, клавишу 7Home в правой части клавиатуры.

6.3. Вывод пустой строки

Чтобы вывести на экран пустую строку, а это может понадобиться для повышения удобочитаемости сообщений, можно использовать команду:

Echo.

Точка должна следовать сразу за словом ‘Echo’. Другой вариант - вывести сообщение, состоящее из одного символа с кодом 255, который при выводе на экран никак не отображается.

6.4. Вывод сообщений в файл

С помощью символа перенаправления ввода-вывода ‘>’ можно выводить сообщения не на экран, а в файл.

Для добавления строки с сообщением в конец файла следует применить такую команду:

Echo сообщение>> имя-файла

Замечание. Если файл не существует, тогда он создается.

Для создания файла и запись в него строки с сообщением нужно применить такую команду:

Echo сообщение> имя-файла

Замечание. Если указанный файл уже существует, то его старое содержимое будет потеряно.

7. Комментарии в командных файлах

Команда Rem позволяет включать в командный файл комментарии, которые не будут интерпретироваться как команды во время исполнения этого файла. Они могут употребляться для улучшения удобочитаемости командного файла. Если включен режим вывода исполняемых команд на экран, то комментарии выводятся на экран, а если этот режим выключен командой ‘Echo off’, тогда комментарии в командном файле на экран не выводятся. Формат команды:

Rem любые-символы

Пример:

Rem Этот текст является комментарием

Перед комментариями, которые нежелательно выводить на экран даже при отладке, следует ставить символ ‘@’:

@Rem Этот текст является комментарием

Замечание. В комментарии не следует употреблять символы перенаправления ввода-вывода ‘<’, ‘>’ и ‘|’.

8. Паузы в командных файлах

Во время выполнения пакетного файла может возникнуть необходимость в его приостановке (например, для вставки нужной дискеты). Для этого можно использовать команду Pause. При выполнении этой команды на экран выводится сообщение:

Strike a key when ready ...

которое означает:

Нажмите любую клавишу, когда будете готовы …

После вывода этого сообщения выполнение командного файла приостанавливается. Если нажать любую алфавитно-цифровую клавишу, Пробел или Enter , тогда выполнение командного файла будет продолжено.

Замечание. Перед выдачей команды Pause полезно командой ‘Echo’ вывести сообщение пользователю о необходимых действиях, например вот так:

Echo Вставьте дискету в дисковод А:

Pause

9. Выполнение команды для набора файлов. Команда For

Команда For позволяет выполнить некоторую команду для нескольких файлов из указанного списка. Она может употребляться не только в командных файлах, но и вводиться пользователем в командной строке MS-DOS. Формат команды:

For %x in (список)команда

где х- любой символ, кроме ‘0’, ‘1’, …, ‘9’ (это ограничение нужно для того, чтобы не было совпадений с параметрами %0 - %9 в командном файле);

список - одно или несколько имен файлов, разделенных пробелами. В именах файлов можно использовать символы ‘*’ и ‘?’;

команда - любая программа или команда MS-DOS, кроме команды For. Если в команде употреблено выражение %x, тогда оно заменяется именами файлов из списка.

Примеры использования команды For в командной строке MS-DOS:

1. Для всех файлов из текущего каталога с расширением .asm вызвать макроассемблер MASM:

For %a in (*.asm) do masm %a

2. Сравнить файлы с расширениями .PAS и .ЕХЕ из текущего каталога с такими же файлами на диске А:

For %b in (*.pas *.exe) do Fc %b A:%b

3. Копировать все файлы из текущего каталога с именами, начинающимися с цифры, в текущий каталог диска D:

For %c in (1 2 3 4 5 6 7 8 9) do Copy %c*.* D:

Замечание. Если команды For используется в пакетном файле, а не в командной строке MS-DOS, тогда вместо аргумента %x надо указывать %%x (см. пример ниже).

Пример. Вызов команды For в командном файле. Для того, чтобы команды, приведенные в предыдущем примере, правильно работали в пакетном файле, их надо записать так:

For %%a in (*.asm) do masm %%a

For %%b in (*.pas *.exe) do Fc %%b A:%%b

For %%c in (1 2 3 4 5 6 7 8 9) do Copy %%c*.* D:

Замечание. Если на диске имеются длинные имена файлов или каталогов, созданные в Windows 95/98 или Windows NT, тогда команда For по умолчанию не будет замечать эти имена, а будет обрабатывать только соответствующие им короткие имена. В MS-DOS 7.0 Вы можете переключить команду For на работу с длинными именами. Для этого перед командой For надо выдать команду ‘LfnFor On’. Для возврата к работе с короткими именами нужно выдать команду ‘LfnFor Off’.

10. Организация переходов в командных файлах

Любой пакетный файл может содержать метки и команды перехода. Это позволяет управлять порядком выполнения содержащихся в нем команд.

10.1. Метки

Любая строка командного файла, начинающаяся с символа двоеточия ‘:’, воспринимается как метка. Имя метки определяется набором символов, следующих за двоеточием до первого пробела или конца строки. Остаток строки, начиная с первого пробела, игнорируется.

10.2. Переходы. Команда Goto

Для организации переходов по метке существует команда:

Goto метка

Если метка, указанная в команде Goto, отсутствует в командном файле, тогда его выполнение завершается с ошибкой.

Пример:

Goto Tag

. . .

:Tag

REM продолжение выполнения командного файла

В этом примере с помощью команды ‘Goto Tag’ производится переход к строке командного файла, следующей за меткой Tag.

11. Проверка условий в пакетных файлах. Команда IF

Команда IF позволяет в зависимости от выполнения некоторых условий выполнять или не выполнять требуемую команду. Формат команды:

IF условие команда

Здесь команда – это любая допустимая команда (в том числе Goto). Эта команда выполняется, если условие в команде IF истинно, в противном случае команда игнорируется.

Строка условие – это одно из приведенных ниже выражений:

ERRORLEVEL число– истинно тогда, когда код завершения предыдущей выполненной программы больше или равен заданному числу. Код завершения устанавливается программами при окончании их работы, по умолчанию этот код равен нулю.

EXIST имя - файла –истинно, если указанный файл существует.

NOT условие–истинно, когда указанное условие ложно.

строка1== строка2 – истинно, если строка1 и строка2 полностью совпадают. Если в этих строках имеются символы %0, %1, %2, …, %9, тогда вместо них подставляются параметры командного файла.

Пример. Создадим командный файл Typ.bat, который выводит указанный как параметр файл на экран. Формат вызова будет: ‘Typ имя-файла’. В этом командном файле нужно проверить, задан ли при вызове параметр и существует ли указанный файл. Командный файл Typ.bat имеет следующий вид:

@Echo off – Отключаем ‘эхо’.
IF -%1 == - goto NoParam – Параметр задан? Если нет, тогда идем на метку NoParam.
IF not exist %1 goto NoFile – Файл существует? Если нет, тогда идем на метку NoFile.
Type %1 – Выводим содержимое файла на экран.
Goto End – Переходим в конец.
:NoParam Echo Задайте параметр! Goto End – Выводим сообщение, что нужно задать параметр, затем переходим в конец.
:NoFile Echo Файл не найден! – Выводим сообщение, что указанный в качестве параметра файл не найден.
:End – Конец командного файла.

Замечание. Коды возврата, которые имеет смысл проверять с помощью команды ‘IF ERRORLEVEL’, возвращают следующие программы MS-DOS: ChkDsk, Choice, Defrag, Deltree, DtskComp, DiskCopy, Find, Format, KeyB, Move, MSAV, Replace, Restore, Scandisk, SetVer и ХСору.