Як уже говорили інші, до параметрів, що проходять через командний рядок, можна отримати доступ у пакетних файлах із позначенням %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 /?командний рядок.