【发布时间】:2026-01-23 07:20:03
【问题描述】:
我正在尝试遍历传递给批处理文件的参数。根据参数,我想设置一个变量标志 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”
【问题讨论】:
标签: batch-file for-loop dos