私はバッチコードを美しいものにすることを決めました(それは、独自のサブ変数( 'hrs'と 'min'と 'sec'数学演算子)をコードの先頭にある変数( 'myformula')に追加し、その後、複数の "set/a ..."コマンドで変数(%myformula%)を呼び出して展開します。別の変数の中に変数を含む数式を保持する
私は%% hrs %%と!hrsを試しました!^mycareula!と同様に、^キャレットも、 "Missing operand"が表示されます。エラー。 これは、数値演算子が正しく展開されていないこと、または数値演算子が文字に変換されていることを示唆しています。
私は敗北を認めれば、すべてのものが完璧に機能し、コードの%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を使用し、defeatestのような答えは「set/mytime = the + original + formula」などのNON固有のソリューションを考慮します)本当の質問)。
@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
Me。 '%' -variablesは 'set myformula ='コマンドラインですでに解決(展開)されているので、当初の手法は失敗しました。 'hrs'、' min'などはまだ割り当てられていないので、(ほとんどの場合)空です。後で 'set/a mytime =%myformula%'を実行すると、実際に 'set/a mytime = * 60 * 60 * 100 + * 60 * 100 + * 100 +'のようなものが受け取られます。 'set myformula ='から '%'を取り除くと、何も解決されないので、 'set/a mytime =%myformula%'は完全な式を受け取って計算できます... – aschipfl
[この回答](https://stackoverflow.com/questions/9922498/calculate-time-difference-in-windows-batch-file/9935540#9935540)のレビューに招待します。 – Aacini