3. Использование встроенного редактора Edit
Для редактирования простых текстовых файлов (в том числе и командных файлов) можно воспользоваться встроенным консольным редактором Edit. Данный текстовый редактор вызывается командой «EDIT». Если команда используется без параметров, то будет создан новый файл. Если же передать в качестве параметра имя файла, то этот файл будет открыт для редактирования. Возможности редактора не нуждаются в подробном описании, стоит заметить лишь то, что для выхода в меню редактора нужно нажать клавишу «Alt».
Наберем команду «EDIT test.cmd» и наш командный файл будет доступен для редактирования:
Изучите возможности редактора, просмотрев все пункты меню.
4. Передача параметров в командные файлы
Предположим, что перед нами возникла аналогичная описанной выше задача, вот только файлы надо копировать не из папки «D:\STUDENT\1_KURS\1_IS\ALEX», а из какой-либо другой.
Понятно, что можно отредактировать наш командный файл, поменяв путь на новый. Но это не совсем хорошее решение. Командные файлы Windows поддерживают передачу параметров.
Вызов командного файла с параметрами аналогичен вызову любой команды с параметрами: указывается имя командного файла, а затем, через пробелы перечисляются необходимые параметры. Количество параметров ограничивается только лишь максимальной длинной командной строки.
Внутри командного файла обращаться к переданным параметрам можно, используя такую запись: «%1», «%2», ..., «%9». Т.е. необходимо указать символ «%» и порядковый номер параметра, который мы хотим использовать.
Для доступа к параметру с номером 10 или с большими номерами, нужно использовать команду «SHIFT», которая производит сдвиг номеров всех параметров: 2-й параметр становится 1-м, 3-й становится 2-м, и т.д., 10-й параметр становится 9-м, т.е. к нему можно обратиться, записав «%9». Если применить команду «SHIFT» еще раз, то произойдет еще один сдвиг и уже под номером 8 будет параметр, имевший номер 10, а под номером 9 — параметр, имевший номер 11. Таким образом можно получить доступ к параметру с любым порядковым номером. Однако, при использовании команды «SHIFT» значение 1-го параметра теряется.
С учетом всего вышесказанного, перепишем наш командный файл так, что бы можно было передавать в него в качестве параметра путь к каталогу с обрабатываемыми файлами:
@ ECHO OFF
ECHO Copy files *.DOC and *.TXT to flash-disk, delete files *.BAK
ECHO.
MD G:\DOCS
D:
CD %1
COPY *.DOC G:\DOCS\
COPY *.TXT G:\DOCS\
DEL *.BAK
PAUSE
С
трока
«CD %1» как раз и будет означать переход
в папку, путь к которой был передан в
командный файл в качестве параметра.
Теперь, для того, что бы применить этот
командный файл к папке
«D:\STUDENT\1_KURS\1_IS\ALEX» необходимо произвести
следующий вызов: «test.cmd \student\1_kurs\1_is\alex».
Однако, если нужные нам файлы находятся в текущей папке, то можно не передавать путь, а произвести вызов командного файла без параметров: «test.cmd».
Как же происходит обработка параметров внутри командного файла?
Обработка параметров отличается от того, как обрабатываются переменные в языках программирования, хотя, внешне, напоминает именно переменные. Командный процессор, прежде чем выполнить очередную команду, заменяет все последовательности «%1», ..., «%9» на значения соответствующих параметров и только после этого выполняет полученную в результате замены команду.
Таким образом, если у нас имеется команда «CD %1», а в качестве параметра пользователь передал значение «\STUDENT\1_KURS\1_IS\ALEX», то после замены эта команда превратится в «CD \STUDENT\1_KURS\1_IS\ALEX», и уже в этом виде команда будет исполнена.
