• ベストアンサー

VBScriptでフォルダ内の全ファイル名取得

こんにちは VBScriptでツールを作成しています。 フォルダA内の全ファイルをリネームして 別フォルダB内に同じファイル名があればリネームして フォルダA内のファイルをコピーしたいのですが 一度にフォルダ内の全ファイル名を取得する方法が分かりません。 なにかいい方法は無いでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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

urach
質問者

お礼

ありがとうございます! フォルダ内をループしながらファイル名を取得できる方法があったんですね。 とっても参考になりました。

すると、全ての回答が全文表示されます。

関連するQ&A