在批处理脚本参数中传递带有引号的带空格参数时,我面临一个问题。这是我的代码和输出,请让我知道缺少的内容。
这是我的脚本:
: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>
因此,请告诉我为什么即使在双引号中提供参数后仍会出现此错误。
答案 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 (")