Windows批处理:循环以回显一组变量

时间:2013-09-03 03:59:37

标签: batch-file

我有一个批处理文件,其中包含下面的代码,该代码为文本文件中的每一行分配一个变量。

因此文本文件可能包含:

RELEASE1
RELEASE2
RELEASE3

批处理文件使用以下代码将文本文件中的每一行设置为var1,var2,var3:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
for /F "tokens=*" %%A in (sites.txt) do (
    SET /A vidx=!vidx! + 1
    set var!vidx!=%%A
)

我需要一个方法来回显所有已定义的变量。变量的数量总是会改变的。所以它可能会达到var8或var10等......

我很确定for循环可以解决问题,但不确定最佳方法是什么或如何做到这一点?我在考虑使用vidx作为迭代次数?谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

非常容易

@echo off
setlocal ENABLEDELAYEDEXPANSION
set count=0
for /F "tokens=*" %%A in (sites.txt) do (
SET /A count+= 1
set var!count!=%%A
)

Rem //:Notice That %count% still stores the last variable, use this in a "for /l" loop:

for /l %%a in (1,1,%count%) do (
Rem Below line is optional and displays variable number
<nul set /p="Variable %%a: "
Echo !var%%a!
)

只要没有数据包含括号,这应该可以正常工作,在这种情况下你将不得不转义它们。

输入for /?以获取相关帮助。问如果你想要解释。

答案 1 :(得分:0)

set var|findstr /R "var[0-9]*="

可能是最短路的......