我按要求在dos批处理文件中将输入参数作为命令运行:
Run an input parameter as command in dos batch script。
那行得通,但是我遇到的问题是:检查输入命令是否为空。
我做的事情:
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 == . (
echo "Input argument missing: command"
GOTO :eof
)
SETLOCAL
set CMD=%*
echo Running command [%CMD%]
echo "XXX %CMD%"
至于“为什么?”,是因为
CMD
值中的引号(a
之前的一个)关闭了%CMD%
之前的引号,因此字符串显示为"echo "a b c""
,因此b
与字符串分离,这导致命令处理器失败。 (它需要一个比较 token ,例如==
或EQU
,但不能使用一些奇怪的b
)。关于batch-file - 检查DOS批处理文件中的输入命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9723301/