如何在for循环中获取变量以正确更新

时间:2013-04-26 01:57:38

标签: windows batch-file

我有一个包含以下内容的批处理文件:

@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循环中实际使用?

1 个答案:

答案 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