用于循环变量扩展的Windows批处理脚本不起作用

时间:2016-07-31 06:07:09

标签: windows variables batch-file for-loop

我正在关注Windows脚本数组和for循环的本教程。这些示例无效,在Windows 7和10上都进行了测试。

Batch script tutorial

当我运行以下for循环时:

:: @echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
    echo %%a 
))

我得到以下输出:

set list = 1 2 3 4
(for %a in ((null)) do (echo %a  ) )

列表变量的内容不会在for循环中打印。我期待得到

1
2
3
4

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

有关使用SET等基本批处理命令的信息,请参阅SS64精彩信息来源。在您的情况下,如上所述,扩展变量名称%list%必须包含空格(如果存在于其定义中)。如果变量定义中不需要该空间,只需在SET语句中将其删除即可。

数组变量列表之间的空格不代表任何问题,并且在许多示例应用程序中非常方便,特别是FOR循环,因为它们允许令牌用于查找正确的值。这个例子有效:

@echo off 
set "list= 1 2 3 4"
for %%a in (%list%) do ( 
    echo %%a 
)

要在批处理脚本中学习使用数组,请阅读 Aacini 的答案:

一些专家对一批批量使用“阵列”术语进行了辩论。例如,在DIR output into BAT array?

中查看 dbenham 的答案