私はバッチ スクリプトを持っていますが、なんらかの理由で foror ループに値が設定されると、その値は保持され、更新されません。for ループの値:「totalTime」と「totalHours」は、「converttime」が初めて呼び出されたときと常に同じ値です。「converttime」関数が正しい値を正確に取得していることを確認しましたが、for ループで値を変更する方法がわかりません。
私のコードは次のようになります。
@echo off
set duration=01:25:45
call :converttime %duration%
set /A duration=%totalHours%+%totalMins%
FOR /F "tokens=2 delims=#" %%i IN (subtitle.txt) DO (
call :converttime %%i
set /A totalTime=%totalMins%+%totalhours%
echo %totalTime%
)
endlocal
goto :eof
:converttime
set mytime=%1
set hour=%mytime:~0,2%
set minute=%mytime:~3,2%
set seconds=%mytime:~6,7%
if NOT "%minute%"=="" (
SET /A totalMins=%minute%*60000
)
if NOT "%hour%"=="~0,2" (
set /A totalhours=%hour%*3600000
)
出力は次のとおりです。
4500000 4500000 4500000 4500000 4500000 4500000
次のような場合:
2500000 3520000 1450000
何か案は??