せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

vbsで全フォルダの階層構造を出力する

待望の3連休。おっすおっす、元気してましたか。
せでぃは相変わらず落ち込んでますが、何か? 何か問題でも?


誤解を恐れずに告白しよう。私は、神を見たと。
いや、ほんと、恐れ入りました。すいません。生きててすいません。呼吸しちゃっててすいません。これ見たとき、本気で青ざめちゃったwww

んじゃー、要点だけ。
あるフォルダの配下にある全フォルダ名を階層構造の枝葉末節に至るまで、本当に全て書き出すというスクリプトです。
※ システムフォルダや非常に複雑な階層のフォルダでやると、CPU負荷とか凄いので気をつけましょう。

'------------------ここから------------------
set fso = createobject("scripting.filesystemobject")
'検索の起点とするフォルダパスを入れて、サブプロシージャをキックしてやる。
call maketree("C:\test")
msgbox "完"
sub maketree(branchpath)
    '定義しておくと何かと便利。フォルダの総数だとか、全フォルダのフルパスだとかを取得するのに再利用できる。
    '詳しくはgetfolderとかgetfileオブジェクトのメソッドを調べてください。
    set branch = fso.getfolder(branchpath)
    for each f in branch.subfolders
        'ここでは単純に表示するだけだけど、これをテキストファイルなり何なりに書き出すよう書き換えるといい。
        wscript.echo f.name
        call maketree(branchpath & "\" & f.name)
    next
end sub
set branch = nothing
set fso = nothing
'------------------ここまで------------------

これだけ! 実質、わずか十数行!!! これだけで、C:\test配下のフォルダの名前がじゃんじゃん出て来ちゃう。C:でやったら全ファイル数を出すことだって可能かもしれない。おおお、ふつくしい……
残念ながら、今はLinux環境しかないので、このスクリプトが動く保証はできませんがw
※後日修正 動作確認しました。fsoオブジェクトの記述が違ってたので、修正。