我決定通過分配式(包含其自己的子變量(「小時」和「分鐘」和「秒」),以及數值運算來美化我的批處理代碼和數學運算符)添加到代碼頂部的變量('myformula'),然後在多個「set/a ...」命令中調用並展開變量(%myformula%)。保持與變量的公式內的另一個可變
我已經試過%%小時%%和!小時!和^插頁,以及!myformula!,但我總是得到一個「失蹤的操作數」。錯誤。 這表明數學運算符沒有正確擴展,或者數值被轉換爲字符。
我要補充一點,一切完美,如果我不服輸,並與實際公式代碼替換%myformula%。
屏幕輸出給出了公式的正確顯示 -
My Formula : %hrs%*60*60*100+%min%*60*100+%sec%*100+%cen%
Missing operand.
My Time :
(OR - My Time : 1 depending on %, %%, !, ^, etc, etc ...)
任何人都可以建議如何正確地作出公式擴展%myformula%的工作?
(我會考慮非本機解決方案,如 - 使用JavaScript,使用cscript,使用powershell - 以及像 - 「set/mytime = +原始+公式」這樣的答案 - 這不是對我的答案真正的問題)。
@echooff
SETLOCAL ENABLEDELAYEDEXPANSION
:start
set myformula=%hrs%*60*60*100+%min%*60*100+%sec%*100+%cen%
:timer
rem - Timer code credits go to - rberteig (2014)
rem Convert t0 into a scaler in 100th of sec with no
seperator chars.
set /a t0=%time: =0%
set /a hrs=1%t0:~0,2%-100
set /a min=1%t0:~3,2%-100
set /a sec=1%t0:~6,2%-100
set /a cen=1%t0:~9,2%-100
echo My Formula : %myformula%
set /a mytime=%myformula%
rem - set /a mytime=!myformula! - does not work either.
echo My Time : %mytime%
:finish
pause
ENDLOCAL
exit /B 0
:EOF
我。邏輯上你的原始方法失敗了,因爲在'set myformula ='命令行中'%'變量已經被解析(擴展)了;因爲'hrs','min'等尚未分配,所以它們(最有可能)是空的;後來當你執行'set/a mytime =%myformula%'時,它實際上會收到一些類似於'set/a mytime = * 60 * 60 * 100 + * 60 * 100 + * 100 +'這個無效的cource。當從'set myformula ='中移除'%'-signs時,沒有東西可以解析,所以'set/a mytime =%myformula%'得到了完整的公式,可以計算出來...... – aschipfl
我邀請你回顧[這個答案](https://stackoverflow.com/questions/9922498/calculate-time-difference-in-windows-batch-file/9935540#9935540) – Aacini