0

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

所以文本文件可能有:

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 作为迭代次数?谢谢你的帮助!

4

2 回答 2

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 /?寻求帮助。询问是否需要解释。

于 2013-09-03T04:12:03.793 回答
0
set var|findstr /R "var[0-9]*="

可能是最短的方法......

于 2013-09-03T07:26:53.247 回答