Пакетный файл для циклических аргументов, подобных переключателю?

Я пытаюсь перебрать аргументы, которые я передаю пакету В зависимости от аргумента я хочу установить флаг переменной 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 TEST / 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» вместо «ТЕСТ»

9
задан casperOne 17 August 2012 в 18:07
поделиться