VBScriptで実行フォルダ以下の全ファイルパスを取得して、リストをファイルに出力するコード
VBScriptで作った「VBScriptで実行フォルダ以下の全ファイルパスを取得して、そのリストを別ファイルに出力する」コードです。
このコードをコピーしてテキストファイルを作成し、拡張子を「.vbs」に変えればすぐに使えます。
このプログラムの動作詳細
■このvbsを実行したフォルダ内(サブフォルダ含む)にある、拡張子が「.txt」のファイルのフルパスを取得
■フルパスのリストを「FileList.txt」という名前のファイルに書き込む(自動で作成されます)
■「FileList.txt」は、vbsの実行フォルダに作成される
■フルパスのリストを「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で実行フォルダ以下の全ファイルパスを取得して、リストをファイルに出力する方法でした!
スポンサードリンク