Windows批处理文件错误:'此时意外'错误

时间:2012-03-21 18:54:46

标签: batch-file batch-processing

我的批处理代码出错了

was unexpected at this time

我删除了所有评论,并将所有开头括号与计数器关闭匹配,但仍然会出现相同的错误。

错误是什么意思?

1 个答案:

答案 0 :(得分:3)

此错误的最可能原因是括号内使用的%变量%扩展,因为在这种情况下,扩展值是变量在进入(块)之前的值。一个简单的例子:

@echo off
for /L %%i in (1,1,10) do (
   set /P input=Enter input value: 
   if %input% == One (
      echo Option "one" selected
   )
   if %input% == Two (
      echo Option "two" selected
   )
   . . .
)

在前面的示例中,%input%值始终扩展为空,因为在执行FOR循环之前该变量不存在,因此if将扩展为if == One (并导致上述错误。请记住,在执行之前解析执行命令时,%em%扩展只实现一次。在这种情况下,执行命令是外部FOR,因此包含在任何级别中的所有%var%扩展都会产生此效果。

解决此问题的方法是通过延迟扩展,即在开始时包含setlocal EnableDelayedExpansion命令,并用!var替换所有%var%扩展!那些。这样,!var的值!变量将每次扩展执行它的命令。输入set /?cmd /?以获取有关此主题的更多详细信息。