Использование пакетных параметров командной строки
Пакетные параметры командной строки используются в пакетном файле для получения информации о настройках среды.
Файл Cmd.exe разворачивает переменные с %0 по %9. При использовании пакетных параметров переменная %0 заменяется на имя пакетного файла, а переменные с %1 по %9 — на соответствующие аргументы, напечатанные в командной строке. Для доступа к переменным больше %9 запустите команду shift. Для получения дополнительных сведений о команде shift смотрите раздел Shift. Параметр %* ссылается на все аргументы, которые передаются пакетному файлу, за исключением параметра %0.
Например, для копирования содержимого из папки 1 (Folder1) в папку 2 (Folder2), где параметр %1 заменяется на значение Folder1, а параметр %2 — на значение Folder2, в пакетном файле с именем Mybatch.bat введите следующую строку:
xcopy %1\*.* %2
Для запуска файла введите:
mybatch.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 в показанных выше примерах можно заменить на другие значения пакетных параметров.
Модификатор %* является уникальным, так как он представляет все аргументы, переданные пакетному файлу. Этот модификатор не используется в комбинации с модификатором %~. Конструкция %~ должна завершаться допустимым номером аргумента.
Нельзя манипулировать пакетными параметрами подобно переменным среды. Нельзя искать и заменять значения или контролировать подстроки. Но переменной среды можно назначить параметр, а потом уже ей манипулировать.