Пакетные параметры командной строки используются в пакетном bat файле для получения информации о настройках среды.
Программа cmd.exe разворачивает переменные с %0 по %9. При использовании пакетных параметров переменная %0 заменяется на имя пакетного файла, а переменные с %1 по %9 - на соответствующие аргументы, напечатанные в командной строке.
Для доступа к переменным больше %9 надо запустить команду shift
. Параметр %* ссылается на все аргументы, которые передаются пакетному файлу, за исключением параметра %0.
Допустим, для копирования содержимого из папки Folder1 в папку Folder2, где параметр %1 заменяется на значение Folder1, а параметр %2 заменяется на значение Folder2, в пакетном файле с именем Myfile.bat введите следующую строку:
xcopy %1\*.* %2
Для запуска файла введите:
Myfile.bat C:\folder1 D:\folder2
Одинаково, как и при записи в пакетный файл строки:
xcopy C:\folder1 \*.* D:\folder2
С пакетными параметрами можно использовать модификаторы. Модификаторы используют информацию о текущем диске и каталоге как часть или полное имя файла или каталога. Для использования модификатора напечатайте символ (%), затем символ тильды (~), а потом соответствующий модификатор (%~модификатор
).
Описание модификторов, используемые для расширения.
Модификатор |
Описание |
---|---|
%~1 |
расширение %1 и удаление любых кавычек ("") |
%~f1 |
замена %1 полным путем |
%~d1 |
замена %1 именем диска |
%~p1 |
замена %1 путем |
%~n1 |
замена %1 именем файла |
%~x1 |
замена %1 расширением имени файла |
%~s1 |
замена путем, содержащим только короткие имена |
%~a1 |
Замена %1 атрибутами файла |
%~t1 |
замена %1 датой и временем модификации файла |
%~z1 |
замена %1 размером файла |
%~$PATH:1 |
поиск в каталогах, перечисленных в переменной среды PATH, замена %1 полным именем первого найденного файла. Если переменная среды не определена или поиск не обнаружил файлов, модификатор выдает пустую строку. |
Возможные комбинации модификаторов и квалификаторов для получения более сложных результатов.
Модификатор |
Описание |
---|---|
%~dp1 |
замена %1 именем диска и путем |
%~nx1 |
замена %1 именем файла и расширением |
%~dp$PATH:1 |
поиск в каталогах, перечисленных в переменной среды PATH, и замена %1 именем диска и путем к первому найденному файлу. |
%~ftza1 |
замена %1 строкой, аналогичной результату работы программы dir |
- %1 и PATH в показанных выше примерах можно заменить на другие значения пакетных параметров.
Модификатор %*
является уникальным, потому что он представляет все аргументы, переданные пакетному файлу. Этот модификатор не используется в комбинации с модификатором %~
. Конструкция %~ должна завершаться допустимым номером аргумента.
Нельзя манипулировать пакетными параметрами подобно переменным среды. Нельзя искать и заменять значения, а так же контролировать подстроки. Переменной среды можно назначить параметр, а потом уже ей манипулировать.