VBScriptで実行フォルダ以下の全ファイルパスを取得して、リストをファイルに出力するコード

VBScript

VBScriptで作った「VBScriptで実行フォルダ以下の全ファイルパスを取得して、そのリストを別ファイルに出力する」コードです。

このコードをコピーしてテキストファイルを作成し、拡張子を「.vbs」に変えればすぐに使えます。

このプログラムの動作詳細

■このvbsを実行したフォルダ内(サブフォルダ含む)にある、拡張子が「.txt」のファイルのフルパスを取得
■フルパスのリストを「FileList.txt」という名前のファイルに書き込む(自動で作成されます)
■「FileList.txt」は、vbsの実行フォルダに作成される

サンプルコードでは、
拡張子が .txt のものをターゲットにしていますが、自由に改変して欲しいファイルを取得してください。

より使いやすくするために

■Oracle SQLPLUS用のファイルを作成
拡張子が.sql をターゲットにして、フルパスの先頭に「@」を付ければ、OracleのSQLPLUSでそのまま流せる形になります。

■汎用性を高める
拡張子をソースコード内で直に書いてますが、引数で渡してあげれば汎用性が増します。

スポンサードリンク
Option Explicit

Dim fso, folder, file, subFolder
Dim fileList()
Dim fileIdx
Dim objWshShell
Const FILE_LIST = "\FileList.txt"

'FileSystemObjectオブジェクトの生成
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

'配列初期化
Redim fileList(0)
fileIdx = -1

'カレントディレクトリ以下のフォルダ取得
Set folder = fso.GetFolder(".\")

'全ファイル取得
getFilelist(folder)

If fileIdx > -1 then
  'テキストファイルに書き込み
  WriteFiles
Else
  msgbox("対象ファイルがありません。")
End if


'*===*===*===*===*===*===*
'ファイルリスト取得(再帰処理)
'*===*===*===*===*===*===*
Sub getFilelist(folder)

  For Each file In folder.Files
    
    '末尾が.txtのみ取得
    If Mid(file.Path, InStrRev(file.Path, ".")) = ".txt" then
        fileIdx = fileIdx + 1
        redim Preserve fileList(fileIdx)
        fileList(fileIdx) = file.Path
    End if
  Next

  For Each subFolder In folder.SubFolders
    getFilelist(subFolder)
  Next

End Sub

'*===*===*===*===*===*===*
'取得したパスをテキストファイルに書き込み
'*===*===*===*===*===*===*
Sub WriteFiles
   Dim f1 , CD , strWork
   Const ForReading = 1
   
   'WScript.Shellオブジェクトの作成
   Set objWshShell = CreateObject("WScript.Shell")
   
   'カレントディレクトリ取得
   CD = objWshShell.CurrentDirectory
   Set objWshShell = Nothing
   
   Set f1 = fso.CreateTextFile(CD & FILE_LIST, True)
   
   '書き込み
   For Each strWork In fileList
     f1.WriteLine strWork
   Next
   
   f1.Close
   
End Sub

以上、VBScriptで実行フォルダ以下の全ファイルパスを取得して、リストをファイルに出力する方法でした!

スポンサードリンク

ITリテラシー・プログラミングのまとめ記事