变量由for循环中的其他变量组成

时间:2017-07-28 19:47:49

标签: batch-file variables

在这种情况下:

@Echo off
Setlocal EnableDelayedExpansion

Set /a cnt=0

For /f "delims=" %%A in ('type "Test.txt"') do (
 Set /a "cnt=!cnt!+1"
 Set "var!cnt!=%%A"
)

Set /a "cnt2=0"

For /F %%B in ('Dir /a:d /b') Do (
 Set /a cnt2=!cnt2!+1
 Echo !%var%%cnt2%!
)

“varcnt2”由变量“var”和“cnt2”组成。虽然我期望的输出是:

AqNaTwIznj
dl4lMkYorm
gDtdyFmptd
MmrbIoJrUu
NszuIe8ZMt
QbWYTy7oqC
xUbBgKifGD
y0ouJH3EtK
ZSZxlSnBlQ
zVyRcCFXrM

(Test.txt的内容)我总是得到别的东西。我试过放置%和!以各种方式,但没有一个有效。以下是一些例子:

!var!cnt2!!输出cnt2

%var!cnt2!%输出Echo is off

%var%!cnt2!%输出1 2 3 4 5 6 7 8 9 10

!%var%%cnt2%!输出Echo is off

上次我遇到这个时,我写了这个批处理文件来测试它:

@Echo off
Setlocal EnableDelayedExpansion
set Hello1=a
Set Hello2=b
Set Hello3=c
set a=Hello

:Loop
set /a cnt=cnt+1
Echo !%a%%cnt%!
If %cnt% NEQ 3 Goto Loop
pause

它有效,但在目前的情况下,它没有。 我也在网上搜索过,找不到太多信息,因为大多数问题都是关于不了解DelayedExpansion的人。

我能找到的最接近的是此页面的脚本67:http://initscreen.developpez.com/tutoriels/batch/apprendre-la-programmation-de-script-batch/#LVI-B

但它并没有帮助我理解我所写的内容的不正确之处,因此,任何解决方案或解释都会受到赞赏。

0 个答案:

没有答案