VBScriptでは「FileSystemObject」を使用することで様々なファイル操作を行えます。
前回は、サブフォルダ配下も含めてファイル一覧を表示する方法をご紹介しましたが、今回は、利便性をアップさせるため、テキストに出力する方法をご紹介します。
ソースコード
早速、ソースコードになります。各処理の解説はソースコードの後にまとめています。
Option Explicit
' 出力するファイルリスト
Dim fileListName
fileListName = ".\Sample.txt"
' ファイル一覧を取得するパス
Dim fileListPath
fileListPath = "C:\workspace\VBScript"
' ファイルシステムオブジェクトの作成
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルの存在チェック
If(fso.FileExists(fileListName))Then
' ファイルの削除
fso.DeleteFile fileListName
End If
' テキストファイルのオープン(追記モード)
Dim fileList
Set fileList = fso.OpenTextFile(fileListName, 8, True)
' ファイル一覧の取得
Call GetFileList(fso.GetFolder(fileListPath))
' ファイルシステムオブジェクトの破棄
Set fso = Nothing
' 処理終了
WScript.Quit
' ファイル一覧の取得関数
Function GetFileList(Byval targetPath)
Dim folder, file
' フォルダが存在する場合は、そのフォルダ配下を探索する
For Each folder In targetPath.SubFolders
GetFileList(folder)
Next
' ファイル一覧の表示
For Each file In targetPath.files
fileList.WriteLine(file)
Next
End Function
解説
5行目で出力するファイルリストのパスとファイル名を定義します。
サンプルでは、実行するVBScriptと同じフォルダに「Sample.txt」というファイル名で出力するようにしています。
9行目は、ファイル一覧を取得するパスを定義しており、ここに記述したフォルダ配下をサブディレクトリ含めた全てのファイルを一覧化します。
16行目では、出力するファイルリストの存在確認を行い、存在する場合は削除しています。
なぜ、ファイルリストを削除しているかというと、ファイルリストは追記して書き込むようにしているため、前回の出力結果が残っている場合、そこに追記されてしまうからです。
23行目で、テキストファイルを追記モードで作成しています。
26行目でファイル一覧を取得する関数を呼び出しています。
35行目から47行目が関数となります。
関数についてですが、引数がファイルの一覧を取得するフォルダになっており、引数のフォルダ配下にサブディレクトリが存在する場合は、このサブディレクトリを本関数に渡して実行することにより、再帰的にファイルの一覧を取得しています。
サブディレクトリが存在しない場合は、フォルダ配下のファイル数分ループしつつテキストに書き出しています。
解説は以上になります。少し長いソースコードですが、1行ずつ追っていけば、それほど難しい内容ではないと思いますので、是非使用して頂ければと思います。
その他の機能の解説
本コードで使用する機能の解説は下記にまとめました。こちらも是非ご覧ください。
コメント