批处理脚本参数中带引号的参数用空格引起来

时间:2018-11-12 11:41:28

标签: batch-file command-line-arguments

在批处理脚本参数中传递带有引号的带空格参数时,我面临一个问题。这是我的代码和输出,请让我知道缺少的内容。

这是我的脚本:

:mainFunction
:loop   
    ECHO key %1 and value %2
    IF NOT %1=="" (
        ECHO User has provided parameter.
        IF "%1"=="-installDir" (
            IF "%2"=="" (
                ECHO Invalid value.
                EXIT /B 0
            ) ELSE (
                ECHO Valid value.
                SHIFT
            )
        )
        REM Check other parameters and parse them.
        SHIFT
        GOTO :loop
    )
EXIT /B %ERRORLEVEL%

这是输出(键-installDir和值“ D:\ Test \ New Folder”):

C:\Users\Test\Desktop\BatchPro>installer.bat -installDir="D:\Test\New Folder" -addToDesktop="true"
Folder""=="" was unexpected at this time.
C:\Users\Sinha\Desktop\BatchPro>

因此,请告诉我为什么即使在双引号中提供参数后仍会出现此错误。

1 个答案:

答案 0 :(得分:0)

我接受了评论中的内容并提出了答案。请尝试一下:

:mainFunction
@echo off
:loop   
    ECHO key %1 and value %2
    IF NOT "%~1"=="" (
        ECHO User has provided parameter.
        IF "%~1"=="-installDir" (
            IF "%~2"=="" (
                ECHO Invalid value.
                EXIT /B 0
            ) ELSE (
                ECHO Valid value.
                SHIFT
            )
        )
        REM Check other parameters and parse them.
        SHIFT
        GOTO :loop
    )
EXIT /B %ERRORLEVEL%

您可以从cmd终端运行for /?并在“变量替换”部分下阅读:

%~I         - expands %I removing any surrounding quotes (")