Я пытаюсь перебрать аргументы, которые я передаю в пакетный файл. Основываясь на аргументе, я хочу установить флаг переменной true или false для последующего использования в сценарии.
Итак, моя команда "myscript.bat /u /p /s"
И мой код:
FOR /f %%a IN ("%*") DO (
IF /I "%%a"=="/u" SET UPDATE=Y
IF /I "%%a"=="/p" SET PRIMARY=Y
IF /I "%%a"=="/s" SET SECONDARY=Y
)
Это работает, только если у меня есть один аргумент, который говорит мне, что он получает весь список аргументов как один аргумент. Я пробовал "delims=", но безрезультатно. Любые мысли о получении каждого разнесенного аргумента?
Как насчет добавления значения к одному из параметров?
myscript.bat /u /p /d ТЕСТ /s
:loop
IF "%~1"=="" GOTO cont
IF /I "%~1"=="/u" SET UPDATE=Y
IF /I "%~1"=="/p" SET PRIMARY=Y
IF /I "%~1"=="/s" SET SECONDARY=Y
IF /I "%~1"=="/d" SHIFT & SET DISTRO="%~1"
SHIFT & GOTO loop
:cont
Но SHIFT, который появляется вместе с последним оператором IF, на самом деле ничего не меняет. DISTRO заканчивается "/d" вместо "TEST"