我有一个批处理文件来从一个文本文件中读取数据并获取这些数据的总和。这里我有浮点数据。所以我创建了批处理文件如下:
set LOGFILE=Sample.txt
set /a total=0
setlocal EnableDelayedExpansion
for /f "tokens=1,2* delims=: " %%a in (%LOGFILE%) do (
call :IntAsFP a=%total%
echo %a%
call :IntAsFP b=%%b
echo %b%
set /a total=a+b
echo %total%
call :IntToFP total=%total% 3
echo %total%
)
goto :EOF
:IntAsFP Int=FP
set FP=%2
set %1=%FP:.=%
exit /B
:IntToFP FP=Int digits
set Int=%2
set %1=!Int:~0,-%3!.!Int:~-%3!
exit /B
在这个实际问题中,当我在没有for循环的情况下使用它时,这意味着如果我将值直接传递给第二个参数,它就可以正常工作。当我使用for循环从txt文件中逐个获取数据时,它会失败:它调用函数但没有正确返回值。
有人可以帮助我吗?
答案 0 :(得分:4)
您已启用延迟扩展但未使用它。替换
之类的字符串echo %total%
使用
之类的字符串echo !total!
如果更改代码块中变量的值,则必须使用感叹号而不是百分号,以便稍后在同一代码块中访问它。