人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBSファイルのフォルダ削除の記述の仕方で質問致します。

Set objFSO = CreateObject("Scripting.FileSystemObject")
ret = objFso.DeleteFolder("C:\Users\***\Desktop\*",True)

このように記述したファイルを実行することで、デスクトップ上のフォルダ(内部ファイル含)の削除を行っております。

実は、全てのフォルダではなく、
「作成から7日間以上経過しているフォルダのみ削除」
というような処理にできないかと思っています。

初心者なこともあり、記述の仕方が調べきれませんでした。どうぞ宜しくお願い致します。


●質問者: yoshifuku
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

デスクトップ直下の作成日時を判定するなら、こんな感じでしょうか。

Set fso = CreateObject("Scripting.FileSystemObject")

target_folder = "C:\Users\test\Desktop"
date_now = Now

For Each folder In fso.GetFolder(target_folder).SubFolders
 If DateDiff("h", folder.DateCreated, date_now) > 168 Then
 folder.Delete(True)
 End If
Next

DateDiff を日付指定("d")で呼ぶと四捨五入されて返るので、時間で指定(168 = 24×7)しています。


階層の下にあるフォルダの作成日時も考慮するならば、仕様を決める必要があります。

Desktop
 ├ Folder-A      10日前
 │  ├ Folder-A1   9日前
 │  └ Folder-A2   2日前
 :

7日以上前に作成された Folder-A の配下に、7日未満前に作成された Folder-A2 があった場合、

日付単位で作っているログを入れていくようなフォルダであれば、気にすることはないのでしょうけれど。


yoshifukuさんのコメント
ありがとうございます!完璧です! 毎度のことながら、感謝致します!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ