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


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

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

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

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

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2017/05/18 03:29:20
  • 終了:2017/05/19 05:13:29

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4524ベストアンサー獲得回数18802017/05/18 11:49:26

ポイント100pt

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

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 があった場合、

  • Folder-A2 含めて、丸ごと消す
  • Folder-A2 は残す
    • Folder-A 配下のファイルはどうする?

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

id:miku1973

ありがとうございます!完璧です!
毎度のことながら、感謝致します!

2017/05/19 05:13:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません