2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« コマンドラインで印刷ジョブの状態を表示する。 | トップページ | コマンドラインでPDFファイルを印刷する。(AdobeReader7.0/8.0) »

2007年1月 3日 (水)

現在の日時を何回も取り出さないこと!の実証実験

同じ行であっても%TIME%の値が変化します。

FOR /L %%i IN (1,1,1000) DO CALL :SUB
GOTO :EOF
:SUB
IF NOT %TIME%==%TIME% PAUSE

1/100秒の変化が、1000回中、2回くらい発生しました。
なので
秒なら5万回に一度
分なら300万回に一度
時なら1億8千万回に一度
日なら43億2千万回に一度
くらい発生しそうです。

%DATE%と%TIME%を併用するときは、ロック/逐次化が必要です。
:LOOP
SET d=%DATE%
SET t=%TIME%
IF NOT %d%==%DATE% GOTO :LOOP

或いは、簡便に、リトライを1回にして
SET d=%DATE%
SET t=%TIME%
IF NOT %d%==%DATE% (
SET d=%DATE%
SET t=%TIME%
)
でもよいでしょう。

« コマンドラインで印刷ジョブの状態を表示する。 | トップページ | コマンドラインでPDFファイルを印刷する。(AdobeReader7.0/8.0) »