我正在我的dos批处理文件中将输入参数作为命令运行,就像我在这里提问的一样:在dos批处理脚本中运行输入参数作为命令。 这个方法是有效的,但我遇到了一个问题:我需要检查输入的命令是否为空。 我的做法如下:
SETLOCAL
set CMD=%*
echo Running command [%CMD%]
IF "%CMD%"=="" (
echo "Input argument missing: command"
GOTO :end
)
echo "XXX %CMD%"
并运行:
script.bat echo "a b c"
将输出:
Running command [echo "a b c"]
b was unexpected at this time.
这发生在IF条件中,但为什么呢?
如何检查输入是否为空。我知道如何在dos中检查字符串是否为空,但由于某种原因,在这种组合中它不起作用:(
顺便说一句: 如果我删除IF条件,它就能正常工作,也就是说,命令被正确执行。
- 艾德
if "%~1"==""
,因为它通常更安全。 - jeb"%~1"==""
,但是如果第一个参数只是""
(而第二个参数是非空值),那么这可能会误导人。我的意思是,我们不能确定是否可以指定""
,所以我想用. %1 ==.
测试。 - Andriy M""
会失败,但像&
或<
这样的字符串不会创建语法错误,但唯一真正安全的版本似乎是 REM 技术。 - jeb