0

1 つのテキスト ファイルからデータを読み取り、それらのデータの合計を取得するバッチ ファイルがあります。ここに浮動小数点のデータがあります。したがって、次のようにバッチファイルを作成しました。

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 ループなしで使用すると、値を 2 番目の引数に直接渡すと正常に動作します。for ループを使用して txt ファイルから 1 つずつデータを取得すると、失敗します。関数を呼び出しますが、値が正しく返されません。

誰でもこれで私を助けることができますか?

4

1 に答える 1

4

遅延拡張を既に有効にしていますが、使用していません。のように文字列を置き換えます

echo %total%

のような文字列で

echo !total!

コード ブロック内の変数の値を変更する場合、後で同じコード ブロック内でアクセスするには、パーセント記号ではなく感嘆符を使用する必要があります。

于 2013-09-23T06:23:30.683 に答える