首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么命令行参数在其他命令行参数中表现得很奇怪?

为什么命令行参数在其他命令行参数中表现得很奇怪?
EN

Stack Overflow用户
提问于 2015-08-28 16:36:10
回答 1查看 60关注 0票数 2

我有一个名为arg_parse.cmd的Windows批处理文件,它在特定条件下解析命令行参数。在其他条件下,它会做其他的事情。下面是一个最小的(非)工作示例:

代码语言:javascript
运行
复制
@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是一个空字符串。在进一步的迭代中,它的行为正常。例如,如果我使用几个参数运行脚本:

代码语言:javascript
运行
复制
arg_parse.cmd test some arguments

我得到了这个输出:

代码语言:javascript
运行
复制
1 = test
arg1 =

1 = some
arg1 = some

1 = arguments
arg1 = arguments

1 =

为什么它在第一次迭代时表现得像这样?此外,如果删除最后的注释,为什么要得到一个) was unexpected at this time错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-28 16:52:09

这里有两个问题。

1)当将值赋值给括号内的变量时,需要延迟膨胀

2) 后藤打破括号上下文(包括在IF中),结束括号变得无效

这是一种技巧,它允许您在括号内移动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32275833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档