我有一个批处理文件,其中包含下面的代码,该代码为文本文件中的每一行分配一个变量。
因此文本文件可能包含:
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作为迭代次数?谢谢你的帮助!
答案 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]*="
可能是最短路的......