我正在尝试循环遍历传递给批处理文件的参数。根据参数,我想设置一个变量标志为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
但是与最后一个IF语句一起出现的SHIFT实际上没有移动任何内容。 DISTRO最终变成了"/d"而不是"TEST"。