0

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

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

4

1 回答 1

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%

设置本地启用elayedexpansionhttp ://ss64.com/nt/delayedexpansion.html

于 2013-04-26T02:06:16.557 回答