Як передати аргументи в пакетний файл?

Мені потрібно передавати ідентифікатор та пароль до пакетного файлу під час запуску, а не жорстко кодувати їх у файлі.

Ось як виглядає командний рядок:

test.cmd admin P@55w0rd > test-log.txt

Ще одна корисна порада - використовувати %* для позначення "всіх". Наприклад:

echo off
set arg1=%1
set arg2=%2
shift
shift
fake-command /u %arg1% /p %arg2% %*

Коли ви біжите:

test-command admin password foo bar

буде запущено наведений вище командний файл:

fake-command /u admin /p password admin password foo bar

Можливо, синтаксис трохи неправильний, але загальна ідея така.

Коментарі (9)

Якщо ви хочете розумно обробити відсутні параметри, ви можете зробити щось на кшталт:

IF %1.==. GOTO No1
IF %2.==. GOTO No2
... do stuff...
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1
Коментарі (4)

Так, і просто не забувайте використовувати змінні на кшталт %%1 при використанні if і for і банди.

Якщо ви забудете подвійний %, то ви будете підставляти (можливо, нульові) аргументи командного рядка і отримаєте досить заплутані повідомлення про помилки.

Коментарі (5)