我有一个包含以下内容的批处理文件:
@echo off
set /a count=0
for /F "tokens=*" %%a in (a.txt) do (
set /a count+=1
echo %count% : %%a
)
echo %count%
a.txt包含这个:
1
2
3
4
5
我期望输出看起来像这样:
1 : 1
2 : 2
3 : 3
4 : 4
5 : 5
5
但我得到了:
0 : 1
0 : 2
0 : 3
0 : 4
0 : 5
5
正如您所看到的 - 文件正确解析,计数正在运行(您可以看到%count%
最后等于5)但由于某种原因,%count%保持为0直到之后循环。
如何在for循环中获取更新的变量才能在for循环中实际使用?
答案 0 :(得分:1)
改变这个:
echo %count% : %%a
对此:
Call echo %%count%% : %%a
或者使用变量扩展:
@echo off
setlocal enabledelayedexpansion
set /a count=0
for /F "tokens=*" %%a in (a.txt) do (
set /a count+=1
echo !count! : %%a
)
echo %count%
Setlocal enabledelayedexpansion :http://ss64.com/nt/delayedexpansion.html