こんにちは、わたあめです。今日はVBScriptのサンプルを紹介する記事です。
今回私が作成したのは、フォルダの中にいくつかのサブフォルダが存在していて、そのサブフォルダに更新(フォルダ内にファイルが追加されたなど)があったかどうかを判定するプログラムを作成しました。

上記のように、フォルダ内にあるA,B,Cというサブフォルダのうち、更新のあるフォルダ(図の中ではB)と更新のなかったそれぞれのフォルダでメッセージを出します。フォルダの更新日時を取得して、現在時刻から計算した時刻とを比較しています。それでは、いってみましょう!
フォルダの更新があったかどうかを判定するVBScriptサンプル
早速VBScriptのサンプルを紹介します。
スクリプトサンプル
サンプルでは、Cドライブのtestというフォルダ配下フォルダで、直近1時間以内に更新があったかどうかを判定します。
' 変数定義
Dim fso
Dim fol
Dim fsub
Dim fPath
' フォルダパス設定
fPath = "C:\test" 'フォルダパス
' ファイルシステムオブジェクト取得
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
' フォルダオブジェクト取得
Set fol = fso.GetFolder(fPath)
' 指定したフォルダパス直下のサブフォルダ全て処理
For Each fsub In fol.SubFolders
' 直近1時間でフォルダが更新されたかどうか判定
if fsub.DateLastModified > DateAdd("h", -1, Now) then
' 更新ありの場合の処理
WScript.Echo(fsub.Name & ":更新あり")
Else
' 更新なしの場合の処理
WScript.Echo(fsub.Name & ":更新なし")
end if
Next
' オブジェクト解放
Set fol = Nothing
Set fso = Nothing
サブフォルダの更新日をひとつずつ確認し、実行日時より前の1時間前から更新があったフォルダには「サブフォルダ名:更新あり」、更新がなかったフォルダには「サブフォルダ名:更新なし」というメッセージボックスを表示しています。
スクリプト実行後サンプル
スクリプトを実行すると、下記の通りフォルダに更新あり・なしに基づいたメッセージボックスが出現します。(画像例は、更新ありのバージョン画面です。)

使い方・アレンジ
フォルダのパスを指定する
更新されたかどうか確認したいフォルダの大元のフォルダを指定します。プログラムでいう以下の部分です。
' フォルダパス設定
fPath = "C:\test" 'フォルダパス
サンプルでは、フォルダパスをCドライブ直下のtestと指定しています。ということで、testの中にあるすべてのフォルダを一定時間更新があったか確認します。
判定時刻を指定する
サンプルでは、直近1時間に更新があったかどうかを判定していますが、DateAdd関数の使い方を変更すれば、色々な時刻を指定できます。スクリプトで言うと、以下の部分を変更します。
DateAdd("h", -1, Now)
DateAdd関数をしらべると、使い方は載っていますが、いくつか参考になりそうな時刻設定を載せておきます。
1ヶ月前 | DateAdd(“m”, -1, Now) |
---|---|
1日前 | DateAdd(“d”, -1, Now) |
12時間前 | DateAdd(“h”, -12, Now) |
30分前 | DateAdd(“n”, -30, Now) |
さいごに
いかがだったでしょうか。スクリプト作りの参考になれば幸いです。いまはノーコード・ローコードと言われている時代なので、あまり需要はないかもしれませんが。それでは、また!