- - PR -
Windowsの環境変数「date」や「time」について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-06-26 23:05
宜しくお願いします。
Windowsの環境変数「date」や「time」をバッチファイル(コマンド)に利用 できると思いますが、この「date」や「time」を引数に利用した場合、実際の 日付や時刻の情報を取得してくるのでしょうか。 この質問をさせていただいたのは、@ITの情報(下記)を利用している環境下で 問題が生じているからです。 http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html 上記URLで紹介されている手順をそのまま利用し、定期的にバッチファイルを実行 してバッチ実行時刻をフォルダ名にする仕組みをWindowsサーバ上で運用している のですが、毎日運用していると、たまにフォルダが作成されないことがあります。 例えば、Windows OSの時間で2006年6月26日23:00にバッチファイルが実行された時、 通常であれば[20060626-230000]形式でフォルダ名が作成されるはずなのですが、 [20060626-]のように中途半端なフォルダ名で作成されてしまいます。 ※参考情報 ・日常運用では、Windowsサーバ上で時刻がおかしくなることは感じない。 ・イベントビューワ(システム)には、時刻同期に失敗したとかのイベントは 特に記録されていません。 必要情報ありましたらお知らせしますので、宜しくお願いします。 [ メッセージ編集済み 編集者: winesman 編集日時 2006-06-26 23:08 ] | ||||
|
投稿日時: 2006-06-27 09:39
はじめまして
直接の回答ではないですが。。。 >実際の日付や時刻の情報を取得してくるのでしょうか。 少なくとも、%DATE% %TIME%で出力する分には実行したコンピュータの 日付、時刻を取得してますね。 なので、必要な値に整形する部分での問題のように思えます。 *参照URLのサイトでは%TIME%の場合の処理についてはサンプルがない ようなので実際にどのように記述されているのかはわかりませんが。 | ||||
|
投稿日時: 2006-06-27 09:49
timeで使ってる関数で
「:」とか出力してしまってるとか? timeの場合午前中とかで 桁数が変わる場合あるのを考慮せず 固定で数字を抜き出しているとか? 吐き出すファイル内に 同じコマンドの文字列を吐き出してみてはいかがでしょうか。 [ メッセージ編集済み 編集者: PoH 編集日時 2006-06-27 10:03 ] | ||||
|
投稿日時: 2006-06-27 10:21
私はこの部分に着目しているので、%time:~m,n% の取り出しがどうなっているかに興味があります。 "たまに" を考慮すると、%time% とは無関係なところで、どうこうなっている可能性もあるでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-06-27 11:21
皆様アドバイスありがとうございます。
皆様からいただきましたご指摘が全て該当していました。 問題は、%timeから数字の文字列を整形する部分でした。 下記の通り、時刻の「時」が一桁で表示される際を考慮しない構文でフォルダ名 (BNAME)を取得するようにしたため、夜間0:00〜09:59の間にバッチファイルが実行 されると、問題が発生しまっていました。 set BDATE=%date:~-10% set BTIME=%time:~-11% set BNAME=%BCDATE:~0,4%%BCDATE:~5,2%%BCDATE:~8,2%-%BCTIME:~-11,2%%BCTIME:~-8,2%%BCTIME:~-5,2% 見よう見まねで熟慮せずに作成したのが原因でした。失礼致しました。 0:00〜09:59の時間帯にでも柔軟にフォルダ名に引用できる方法をご存知であれば、 すみませんが、お教えいただければ幸いです。宜しくお願いいたします。 | ||||
|
投稿日時: 2006-06-27 12:58
for /f %%i in ('time /t') do set rowtime=%%i
set hhmm=%rowtime:~0,2%%rowtime:~3% echo %hhmm% で、どうでしょうか? | ||||
|
投稿日時: 2006-06-27 22:22
わちゃ様
情報ありがとうございます。 いただきました構文できちんと動作することを確認できました。 dellgate様、PoH様、じゃんぬねっと様、わちゃ様 色々と助かる助言をすぐにくださって本当にありがとうございました。 | ||||
|
投稿日時: 2006-06-28 03:07
もう解決しているようですが。。
とすると、分表示の0サプレスをやめて、先頭に0が付くようになります。 この意味については、set /? コマンドで確認してください。 for文でコマンドを呼び出すよりも、(理論上は ^^;;)わずかに早くなりますので、 %time% の評価に伴う時間のずれが少なくなる可能性があります(あくまでも可能性ですが)。 なおこれは、Windows 2000でも使用可能です。 |
1