如何检查批量传递的参数是否存在?

mem*_*und 0 batch-file

如何修改以下示例代码来检查启动批处理文件时是否给出了输入参数?

因为如果没有提供参数,检查IF NOT %MYDIR%==test会失败并终止批处理。

SET MYDIR=%1

IF {no parameter given} OR NOT %MYDIR%==test (
   ECHO dir is not "test"
)
Run Code Online (Sandbox Code Playgroud)

dbe*_*ham 6

在处理传递的参数时,处理所有可能性是非常困难的。但以下策略适用于大多数“普通”情况。

if "%~1" equ "" echo arg 1 was not passed
Run Code Online (Sandbox Code Playgroud)

使用修饰符很重要,~因为您无法知道传递的参数是否已用引号引起来。如果传递了类似的参数"this&that",并且您在添加自己的引号之前没有先删除引号,那么您会得到if ""this&that"" equ "". 不再&被引用,并且您的命令不再正确解析。