我有一个名为arg_parse.cmd的Windows批处理文件,它在特定条件下解析命令行参数。在其他条件下,它会做其他的事情。下面是一个最小的(非)工作示例:
@ECHO OFF
IF 0 == 1 (
REM Do nothing
) ELSE (
:parse
REM Print input argument.
ECHO.
ECHO 1 = %1
REM Set argument to local variable.
SET arg1=%1
REM Break after parsing all arguments.
IF "%~1" == "" GOTO :endcmd
REM Print local variable.
ECHO arg1 = %arg1%
SHIFT
GOTO :parse
:endcmd
REM Do not remove this comment.
)在通过解析“循环”进行的第一次迭代中,显然有一个参数,但是集合似乎什么也不做,因为arg1是一个空字符串。在进一步的迭代中,它的行为正常。例如,如果我使用几个参数运行脚本:
arg_parse.cmd test some arguments我得到了这个输出:
1 = test
arg1 =
1 = some
arg1 = some
1 = arguments
arg1 = arguments
1 =为什么它在第一次迭代时表现得像这样?此外,如果删除最后的注释,为什么要得到一个) was unexpected at this time错误?
发布于 2015-08-28 16:52:09
这里有两个问题。
1)当将值赋值给括号内的变量时,需要延迟膨胀
2) 后藤打破括号上下文(包括在IF中),结束括号变得无效
这是一种技巧,它允许您在括号内移动。
https://stackoverflow.com/questions/32275833
复制相似问题