我的批处理代码出错了
was unexpected at this time
我删除了所有评论,并将所有开头括号与计数器关闭匹配,但仍然会出现相同的错误。
错误是什么意思?
答案 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 /?
以获取有关此主题的更多详细信息。