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で実行フォルダ以下の全ファイルパスを取得して、リストをファイルに出力する方法でした!
スポンサードリンク
