2013-09-23 159 views
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

您已启用延迟扩展但未使用它。如果更改了代码块中的变量的值一样

echo %total% 

用绳子像

echo !total! 

替换字符串,则必须在以后使用感叹号,而不是百分号,对其进行访问相同的代码块。

+0

@AndriyM - 谢谢! – Endoro

+0

非常感谢你Endoro和AndriyM :)它的工作原理。 –

相关问题