Batch file 批处理理解中的For/f循环

Batch file 批处理理解中的For/f循环,batch-file,Batch File,这很容易(或者应该),但我可能有理解上的问题。 然而: 我有一个简单的文件,里面有两个数字0和1 这段话: set adp= for /f %%i in (file.txt) do ( set adp=%%i call :test ) :test echo ADP %adp% 所以我希望得到结果 ADP 0 ADP 1 但我明白了 ADP 0 ADP 1 ADP 1 为什么我会得到三个结果而不是两个?因为批处理文件在循环后会转到:test,无论发生什么情况 你应该这样做: set adp=

这很容易(或者应该),但我可能有理解上的问题。
然而:
我有一个简单的文件,里面有两个数字0和1

这段话:

set adp=
for /f %%i in (file.txt) do (
set adp=%%i
call :test
)
:test 
echo ADP %adp%
所以我希望得到结果
ADP 0
ADP 1

但我明白了

ADP 0
ADP 1
ADP 1


为什么我会得到三个结果而不是两个?

因为批处理文件在循环后会转到
:test
,无论发生什么情况

你应该这样做:

set adp=
for /f %%i in (file.txt) do (
  set adp=%%i
  call :test
)
goto :end

:test 
echo ADP %adp%

:end

Facepalm谢谢你-我知道这很简单-但我没想到。