0

我有一个批处理文件来从一个文本文件中读取数据并获取这些数据的总和。这里我有浮点数据。所以我创建了如下批处理文件:

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文件中一一获取数据时,它失败了:它调用了函数但没有正确返回值。

任何人都可以帮助我吗?

4

1 回答 1

4

您已经启用了延迟扩展,但没有使用它。替换字符串,如

echo %total%

像这样的字符串

echo !total!

如果您更改代码块内的变量值,您必须使用感叹号,而不是百分号,以便稍后在同一代码块中访问它。

于 2013-09-23T06:23:30.683 回答