为什么FOR循环命令不适用于在Windows命令提示符下工作的批处理文件?

时间:2014-01-29 12:26:35

标签: windows batch-file

FOR /L %A IN (1,1,100) DO echo %A

批处理脚本中的上述代码会导致此错误:

  

此时A意外。

相同的命令行在Windows命令提示符下正常工作。

有什么问题?

3 个答案:

答案 0 :(得分:2)

您需要使用双百分比字符:

FOR /L %%A IN (1,1,100) DO echo %%A

答案 1 :(得分:1)

问题在于%%A仅用于命令行。

在批处理文件%A中使用时,应替换为%%A

答案 2 :(得分:1)

如果你运行FOR /?,你会发现参数列表后面的第一段开头如下:

  

要在批处理程序中使用FOR命令,请改为指定%%变量   %变量。

举个例子,让我们从一个简单的FOR循环开始:

FOR %x in (*) DO ECHO %x

这将在命令提示符下正常运行,打印出当前目录中每个文件的名称,但如果我们在批处理文件中逐字使用,我们会收到错误说明:

  

此时出乎意料。

这是因为批处理文件有一些额外的功能,使用百分号后紧跟一些文本,因此当从批处理文件中调用FOR时,它会查找两个百分号。因此,如果我们想在批处理脚本中使用相同的FOR循环,我们需要将%x的每个实例替换为%%x

我们最终放入批处理文件的是:

FOR %%x in (*) DO ECHO %%x