Як уже говорили інші, до параметрів, що проходять через командний рядок, можна отримати доступ у пакетних файлах із позначенням %1
до %9
. Також є два інших жетони, якими ви можете користуватися:
%0
- ім'я виконуваного файлу (пакетного файлу), визначене в командному рядку .
%*
- це всі параметри, вказані в командному рядку - це дуже корисно, якщо ви хочете переслати параметри до іншої програми.
Існує також безліч важливих прийомів, яких слід знати, крім простого доступу до параметрів.
Перевірка, чи був переданий параметр
Це робиться з такими конструкціями, як IF "%~1"==""
це правда, якщо і лише тоді, коли аргументи взагалі не були передані. Зверніть увагу на символ тильди, який спричиняє видалення будь-яких навколишніх лапок зі значення %1
; без тильду ви отримаєте несподівані результати, якщо це значення включає подвійні лапки, включаючи можливість синтаксичних помилок.
Поводження з більш ніж 9 аргументами (або просто полегшення життя)
Якщо вам потрібно отримати доступ до більше ніж 9 аргументів, ви повинні використовувати команду SHIFT
. Ця команда зміщує значення всіх аргументів на одне місце, так що%0
приймає значення %1
, %1
приймає значення %2
і т.д. %9
приймає значення десятого аргументу (якщо такий присутній), яке не було доступним через жодну змінну перед викликомSHIFT
(введіть команда SHIFT /?
для додаткових опцій).
SHIFT
також корисний, коли ви хочете легко обробити параметри, не вимагаючи, щоб вони були представлені у певному порядку. Наприклад, сценарій може розпізнавати прапори -a
і -b
в будь-якому порядку. Хороший спосіб розбору командного рядка в таких випадках є
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Ця схема дозволяє проаналізувати досить складні командні рядки, не божевільно.
Заміна параметрів партії
Для параметрів, що представляють імена файлів, оболонка забезпечує безліч функціональних можливостей, пов’язаних з роботою з файлами, недоступними іншим способом. Доступ до цієї функціональності можна отримати з конструкцій, які починаються з%~
.
Наприклад, щоб отримати розмір файлу, переданого як аргумент, використовуйте
ECHO %~z1
Щоб отримати шлях до каталогу, з якого був запущений пакетний файл (дуже корисно!), Який ви можете використовувати
ECHO %~dp0
Ви можете переглянути весь спектр цих можливостей, ввівши CALL /?
командний рядок.