バッチファイルをスタートアップに入れています。
手軽で便利なのですが、起動するたびに出てしまうので、if文か何かを使って、前回の実行してから12時間経っていない場合はバッチファイルを終了させるようにできないでしょうか。
robocopyを使ったバッチで、オプションでログを作成するようにしています。そのテキストファイルの作成時間で12時間経っているかどうか判断できればと思っています。
と質問したところ、以下の回答を得ました。
check.vbs
-------------------------
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile("logfile.txt")
WScript.Quit(DateDiff("h",f.DateCreated,Now)>12)
-------------------------
バッチでは、先頭で、
cscript check.vbs || exit
これを追加したのですが、12時間経っていなくても実行されます。
なぜなのでしょうか。
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のログファイルの最終行に書き込まれている日付」を使う必要があります。
この回答への補足
度々ありがとうございます。
複数台にバッチファイルを導入したいので、Windows7標準搭載のコマンドのみを使用したいです。
DateLastModifiedを使ってもできないでしょうか。
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.asp …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- その他(開発・運用・管理) Windowsバッチファイルでリモートデスクトップを自動ログインするが確認画面が出る対処方法 1 2022/12/19 15:48
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Windows 10 WindowsUpdateで再起動を阻止したいです 3 2023/03/15 22:41
- その他(コンピューター・テクノロジー) Power Shellコマンドで作成日時を一括シフトする方法 3 2022/10/21 12:37
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
バッチファイルを実行後、終了...
-
順番にPINGを飛ばすバッチ
-
リモートデスクトップの取り合...
-
バッチ実行を意図的に失敗させ...
-
oracleのimp-00002エラーについて
-
WindowsのRANDOM関数を用いたバ...
-
バッチプログラムについて(編...
-
batファイルで、call使っても戻...
-
こういう缶バッチ(?)みたいな...
-
バッチの哲学
-
WinSCPがタスクスケジューラで...
-
クローム拡張機能の無効化有効化
-
ポケモン、ソウルシルバーで8個...
-
batが実行できない
-
コマンドの結果を変数に入れたい
-
回線速度をバッチファイルでフ...
-
windowsのbatファイルで「| の...
-
ログオンユーザを簡単に切り替え
-
Androidアルバムの画像を消去で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
バッチファイルを実行後、終了...
-
batファイルで、call使っても戻...
-
リモートデスクトップの取り合...
-
DOSコマンドのforで空白行をス...
-
DHCP設定バッチnetshコマンドに...
-
oracleのimp-00002エラーについて
-
batファイルを実行してコマンド...
-
バッチでEnterを認識させ...
-
バッチ実行を意図的に失敗させ...
-
バッチプログラムについて(編...
-
batが実行できない
-
コマンドの結果を変数に入れたい
-
バッチファイルでエクセルのマ...
-
バッチファイルでPC情報を取得する
-
コマンドプロンプトで最新のフ...
-
WindowsのRANDOM関数を用いたバ...
-
ログオンユーザを簡単に切り替え
-
バッチ実行時にバッチのファイ...
-
DBサーバとバッチサーバ
おすすめ情報