一个未使用的if块中的Windows批处理语法错误

时间:2015-09-12 13:59:17

标签: windows batch-file

以下批处理脚本失败的原因“命令的语法不正确”。如果我没有提供参数,则在Windows 7上出现错误:

IF NOT [%1]==[] (
echo "blablabla" > %1
) ELSE (
echo "please provide argument"
)

但这段代码没有问题:

IF NOT [%1]==[] (
echo "blablabla"
) ELSE (
echo "printing not existing argument: %1"
)

提前致谢

2 个答案:

答案 0 :(得分:2)

用双引号将文件名括起来会强制if/else块来正确解析和读取表达式。

例如

IF NOT [%1]==[] (
echo "blablabla" > "%1"
) ELSE (
echo "please provide argument"
)

答案 1 :(得分:0)

问题是整个if / else块被一次读取和解析。因此,如果%1为空,则仍会解析重定向>并将其评估为无效。

你可以解决这个问题:

IF NOT [%1]==[] (
  goto :Redirect
) ELSE (
  echo "please provide argument"
)
goto :Continue
:Redirect
echo "blablabla" > %1
:Continue