• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチファイル 時間指定)

バッチファイル 時間指定

このQ&Aのポイント
  • バッチファイルをスタートアップに設定していますが、起動するたびに出てしまいます。前回の実行から12時間経っていない場合はバッチファイルを終了させる方法を知りたいです。
  • robocopyを使ったバッチファイルで、ログファイルの作成時間を利用して12時間経過しているかどうかを判断したいです。
  • バッチファイルに「cscript check.vbs || exit」を追加し、12時間経過していない場合は終了させたいのですが、なぜ実行されてしまうのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • 8ive22ty
  • ベストアンサー率52% (770/1479)
回答No.2

> 他の方法ではなく、質問内容がなぜ正常に実行されないかを教えていただけないでしょうか。 スクリプトの比較計算式がまちがっていて、 f.DateCreated と Now の位置が逆なので、日付の比較計算結果が常にマイナスになってしまうからでしょう。 下記のスクリプトを test.vbs として作成して表示結果を確認してみてください。 常にf.DateCreated < now のはずです。 Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile("logfile.txt") wscript.echo f.DateCreated wscript.echo now --- f.DateCreated と Now を入れ替えても正しい処理は行なわれません。 理由は DateCreated はファイルの当初の作成日付ですので、 robocopyのログの最終行に書き込まれている日付ではありません。 すでにNo.1で書きましたが「robocopyのログファイルの最終行に書き込まれている日付」を使う必要があります。

mamoru1220
質問者

お礼

ご回答ありがとうございました。

mamoru1220
質問者

補足

度々ありがとうございます。 複数台にバッチファイルを導入したいので、Windows7標準搭載のコマンドのみを使用したいです。 DateLastModifiedを使ってもできないでしょうか。

その他の回答 (1)

  • 8ive22ty
  • ベストアンサー率52% (770/1479)
回答No.1

> そのテキストファイルの作成時間で12時間経っているかどうか判断できればと思っています。 その時間ではなくて「前回、robocopy処理が終了した日付・時刻」を使うのが適切ではありませんか? いろいろなやり方がありますので、一概には言えませんが、 私なら、前回の robocopy の終了日付・時刻と、バッチ実行時刻(現在時刻)を比較します。 robocopy の日付・時刻はログファイルの最終行に記録してありますので、 tail コマンドを使用して tail -1 robocopy.log のように ログファイルの最終行の文字列を取得します。 取得した文字列から判定に使用する「日付・時刻」は別途プログラムで切り出して、現在の日付・時刻と比較します。 tail コマンドは下記サイトのマイクロソフトの rktools.exe をダウンロードしてインストールすれば、Win7 で使用できます。 ---Windows Server 2003 Resource Kit Tools http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=17657

mamoru1220
質問者

お礼

ご回答ありがとうございました。

mamoru1220
質問者

補足

ご回答ありがとうございます。 他の方法ではなく、質問内容がなぜ正常に実行されないかを教えていただけないでしょうか。

関連するQ&A