VBSにて下記のような、処理を行いたいと思いフローのコード化を試みているのですが、手詰まりの状況になってしまったので、
ご助言をいただませんでしょうか。
VBSまったくの初心者のため、現時点までのプロセス、参考にしたサイト等も投稿させていただきます、ここまでの流れや考え方があっているかも、ご教授いただけると幸いです。
《目的》
元々、SQL(LDF,MDF)のデータバックアップを取るためのVBSがあり、そのVBSを手動で実行したときに、成功か失敗かをMessageBoxに表示させたい。
具体的な処理の流れは下記を考えております。
※フロー例
①BackupのVBSを実行 ※BackupのVBSは既にあり手動で実行します。
②ファイルの更新日時を取得 ※対象のファイル(Backupファイル)が更新されたかを確認
③現在時刻を取得
④現在日時とBackupファイルの更新日時を比較
⑤2つの時間の間隔が1分以上だった場合は失敗表示
⑥2つの時間の間隔が1分以内だった場合は成功表示
《現状》
フローの②~③までは、次のサイトを参考に下記のように書いてみました。
・ファイルの更新日時を取得
https://www.wannko.net/vbs/file/filechange.html
・現在の時刻を取得
https://www.kanaya440.com/contents/script/vbs/function/date/now.html
Set objWSHShell = CreateObject("WScript.Shell")
objWSHShell.run "cmd.exe /c c:\zPO\zPO_Bak.bat", 7
Dim fs
Dim fn
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set fn = fs.GetFile("C:\Users\PC1\Desktop\test.txt")
strNow = Now
現在はフローの②、③を比較するところが下記のサイトで紹介されている関数でできると思い試しております。
DateDiff 関数
https://www.kanaya440.com/contents/script/vbs/function/date/date_diff.html
DateDiff(strInterval, varDate1, varDate2)
そこで、
①varDate1, varDate2にそれぞれ、「ファイルの更新日時の取得結果」「現在の時刻の取得結果」を挿入
上記のコードで言う
「ファイルの更新日時の取得結果」
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set fn = fs.GetFile("C:\Users\PC1\Desktop\test.txt")
「現在の時刻の取得結果」
strNow = Now
②時間間隔を返す
というところまでをひとまず作りたいのですが、varDate1, varDate2に上記の関数の実行結果をどのように指定すればいいかが分からない状況です。
上記の処理まで進めれば、DateDiff関数の実行結果が1分以内の場合は失敗、1分以上の場合は成功とMessageBoxに表示させる
ようにしようと考えております。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。