VBScriptさんま屋.

VBScriptの個人的なメモです (´・ω・`)

ファイル一覧を取得する

概要

深さを指定してファイル一覧を取得し、テキストファイルout.txtへ出力する。

ファイル一覧を取得する

Const TOP_PATH = "."は、現在の作業フォルダを起点として探索する。
Const TOP_PATH = "C:¥test"などフォルダを直接指定しても良い。
SEARCH_DEPTHは探索する深さを指定する。0だとサブフォルダ内を探索しない。-1だと無限に深く探索する。

'ファイル一覧をテキストファイルに出力する
'再起呼び出しを使用

Const TOP_PATH = "."   '探索を開始するトップパスに作業フォルダを指定
Const SEARCH_DEPTH = 1 '1階層下のサブフォルダ内まで探索する

Dim fso  'ファイルシステムオブジェクト
Dim txt  '出力用ファイルストリーム

'準備
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.OpenTextFile("out.txt", 2, True)

'実行
Call GetList(TOP_PATH, SEARCH_DEPTH)

'後処理
txt.Close
Set fso = Nothing
Set txt = Nothing
Msgbox "完了"


Function GetList(path, depth)
'フォルダ内のファイル一覧を出力
    Dim fol  'フォルダオブジェクト
    Dim f    'ファイル、フォルダ

   'フォルダオブジェクトを取得
    Set fol = fso.GetFolder(path)

    'フォルダ内のファイル名を出力
    For Each f In fol.Files
        Print f.Name
    Next
  
    If depth = 0 Then
    '探索の最下層であれば終了
        Exit Function
    Else
    '再起呼び出しでサブフォルダ内のファイル一覧を出力
        For Each f In fol.SubFolders
            Call GetList(f.Path, depth - 1)
        Next
    End If
End Function


Function Print(str)
'ファイルに出力する
    txt.WriteLine(str)
End Function

なおフォルダ内のファイル一覧を取得するだけなら、VBScriptを使わなくてもコマンドプロンプトから
dir /B >> out.txtとすれば簡単に取得できる。