2012-11-16 69 views

回答

1

你缺少21(这将使它在循环比较的数量21(,也打破了if语句之间的空间,后者是为什么你得到一个语法错误。

添加一个空格,它工作正常。

echo off 

set /a a=0 
:start 
if %a% LEQ 21 (
echo test 
set /a a=%a%+1 
goto start 
) 
+0

谢谢。也为我工作 – globus243

+0

伟大,无后顾之忧:) –

3

您发布的代码是不是有效的bash script它使用了这样的循环是一个batch scriptecho test 20倍的bash script

#/bin/bash 

for i in {1..20}; do 
    echo test 
done 

更清晰,比batch scripts可读,欢迎bash

+1

打字比我快! –

+0

对不起,改变了,我的错。打字速度比思考更快往往会导致愚蠢的错误。 – globus243

2

除了巴厘岛C已经解释的错误,您应该注意您的代码有潜在的问题。在此命令中:set /a a=%a%+1的%的%值被扩展在执行命令if只是一次。在这种情况下偶然运行你的代码,因为goto命令导致if在每个循环再次执行,但如果你的程序将是更大,更复杂,这组命令将被执行多次括号内,代码失败,因为%A%将扩大只是一个时间的值a变量有之前输入括号。

在这种情况下,解决此问题的方法很简单:只需消除百分号,因为set /a a=a+1命令可以直接采用变量的值。但是,这里涉及更多!欲知详情,请键入set /?并注意“延迟变量扩展”的描述。