在这种情况下:
@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
但它并没有帮助我理解我所写的内容的不正确之处,因此,任何解决方案或解释都会受到赞赏。