• ベストアンサー

vbscriptでフォルダ削除

vbscript 第1層目のフォルダから8層目まであるフォルダツリーがあります。 そこで、残したいフォルダ"以外"を削除するScriptの考え方のヒントを乞いたいのですが、できますか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

リカーシブコールを使います。 Sub Main()   Set FSO = CreateObject("Scripting.FileSystemObject")   Set Folder = FSO.GetFolder("C:\AAAA") '★←ここが第1レベル   ChildFolder Folder, 1 '★フォルダの解析処理 End Sub Sub ChildFolder(Folder,ByVal Level)   Level = Level + 1   For Each SubFolder In Folder.SubFolders     '★この辺で、階層とか名前とかによって処理する     ChildFolder SubFolder, Level '★自分自身を呼び出す   Next End Sub

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Sub etst01() Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder("C:\Documents and Settings\") For Each objSubFolder In objFolder.SubFolders MsgBox objSubFolder.Name Next End Sub エクセルVBEの標準モジュールに上記を張り付けやってみて、参考にしてください。 8層あるフォルダーの全てを対象にするにはロジック的にどう工夫するか。 2次元配列にでも探索の都度のフォルダ名を記録しておくのかな。 または何番目を頼りに探すか。 一旦葉まで下りその間配列にレベル番号とレベル内フォルダ数と現在処理しているフォルダのレベル内何番目を記録し、終ると次の番目の処理(名前探索)に移る。レベル内フォルダ数が終ると1レベル上げて繰り返す。 プロ級の処理技になると思う。 ーー フォルダの削除はWEBでも照会してください 技術評論社「VBSCRIPTポケットリファレンス」など参照。

sikuminale
質問者

お礼

ありがとうございます。 プロ旧の処理技に惹かれました。 今は、linuxのコマンド処理の方向も模索中です!

関連するQ&A