VBスクリプトサンプルです。
以下のプログラムをVBSファイルとして保存してください。
(※※※※全角スペースは半角スペース2個と置換してください※※※※)
そのファイルにエクスプローラなどから、フォルダをドラッグしてみてください。
プログラム先頭で切った出力先に、ログとして残ります。
Option Explicit
'-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Const LIST_FILE = "C:\FileList.txt" '←ログ出力先
'-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
'-----------------------------------------------
Dim objArgs
Dim fsoObj
Dim objText
'オブジェクト生成
Set objArgs = WScript.Arguments
Set fsoObj = CreateObject("Scripting.FileSystemObject")
'ログファイルがあったら抹消
If fsoObj.FileExists(LIST_FILE) Then
Call fsoObj.DeleteFile(LIST_FILE)
End If
'ログファイル準備
Set objText = fsoObj.OpenTextFile(LIST_FILE, 8, True, 0)
'メイン実行
Call MainProc(objArgs)
'ログファイルクローズ
objText.Close
'オブジェクト開放
Set objText = Nothing
Set fsoObj = Nothing
Set objArgs = Nothing
'-----------------------------------------------
'-----------------------------------------------
'メイン実行部
'-----------------------------------------------
Sub MainProc(arg)
Dim objParam
'パラメータループ
For Each ObjParam in arg
'フォルダであるかをチェック
If fsoObj.FolderExists(objParam) Then
'リスト作成メイン実行
Call CreateFileList(objParam)
End If
Next
End Sub
'-----------------------------------------------
'リスト作成メイン
'-----------------------------------------------
Sub CreateFileList(inFolderName)
Dim fsoFolder
Dim fsoSubFolder
Dim fsoFile
'フォルダオブジェクト取得
Set fsoFolder = fsoObj.GetFolder(inFolderName)
'フォルダ内/ファイルループ
For Each fsoFile In fsoFolder.Files
'ログに出力
objText.WriteLine fsoFile.Path
Next
'フォルダ内/サブフォルダループ(サブフォルダが不要なら、このループは不要)
For Each fsoSubFolder In fsoFolder.SubFolders
'サブフォルダで再帰
Call CreateFileList(fsoSubFolder)
Next
End Sub
お礼
ありがとうございます! フォルダ内をループしながらファイル名を取得できる方法があったんですね。 とっても参考になりました。