- ベストアンサー
VBS内部で複数の答えを出し一つのダイアログに纏めて出力する方法ってどうやるんでしょうか?
- VBS内部で複数の答えを出し一つのダイアログにまとめて出力する方法について質問です。具体的には、複数のソースを使用してそれらをまとめた結果を、WScript.Echoで出力する方法を知りたいと思っています。
- 現在、VBSのソースコードを使用して、指定のフォルダ内にあるテキストファイルの一覧を表示しています。しかし、複数のソースを使用してその結果を一つのダイアログにまとめて出力する方法が分からないため、質問させていただきます。
- VBSを使用して複数のソースの結果をまとめ、一つのダイアログに出力する方法について質問です。現在は指定のフォルダ内のテキストファイルの一覧を表示していますが、複数のソースを使用してそれらをまとめる方法が分からないため、アドバイスをいただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
取得部分を関数化して、まとめて結果を出力したらいいです。 ------------------------------------------------------- サンプルは見やすさのために、全角スペースを使用しています。 コピペするときは、全角スペースを半角スペース2個に置換して使ってください。 ------------------------------------------------------- Option Explicit Dim fso Dim tmpMessage Set fso = CreateObject("Scripting.FileSystemObject") tmpMessage = "ファイル一覧:" & vbNewLine 'C:\1\の中を検索 Call GetFindText("C:\1", tmpMessage) 'C:\2\の中を検索 Call GetFindText("C:\2", tmpMessage) '結果出力 WScript.Echo tmpMessage '-------------- '以下は取得関数 '-------------- Sub GetFindText(ByVal p_strPath, ByRef p_msg) Dim src Dim FileName Dim FileEx Set src = fso.GetFolder(p_strPath) ' 対象フォルダの指定 ' 指定のフォルダに格納された各ファイルを処理する For Each FileName In src.Files FileEx = fso.GetExtensionName(FileName) ' ファイル名から拡張子を抜き出す If LCase(FileEx) = "txt" Then ' 拡張子を小文字化してから比較 p_msg = p_msg & FileName & vbNewLine End If Next End Sub
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
細かい部分は、sakusa001 さんがお示しの ソース のままにしております。 #2 さんと同じく >サンプルは見やすさのために、全角スペースを使用しています。 >コピペするときは、全角スペースを半角スペース2個に置換して使ってください。 【第1案】複数の フォルダ名 を配列の要素として列挙しておく '------------------------------------------------------- Set fso = CreateObject("Scripting.FileSystemObject") myPath = Array("hoge1", "hoge2", "hoge3") tmpMessage = "ファイル一覧:" & vbNewLine For i = 0 To UBound(myPath) Set src = fso.GetFolder("C:\1\" & myPath(i)) ' 対象フォルダの指定 ' 指定のフォルダに格納された各ファイルを処理する For Each Filename In src.Files FileEx = fso.GetExtensionName(Filename) ' ファイル名から拡張子を抜き出す If LCase(FileEx) = "txt" Then ' 拡張子を小文字化してから比較 tmpMessage = tmpMessage & Filename & vbNewLine End If Next Next WScript.Echo tmpMessage '------------------------------------------------------- 【第2案】複数の任意の フォルダ を選択できるようにする '------------------------------------------------------- Set fso = CreateObject("Scripting.FileSystemObject") ' 指定のフォルダに格納された各ファイルを処理する tmpMessage = "ファイル一覧:" & vbNewLine Do Set myPath = CreateObject("Shell.Application") _ .BrowseForFolder(&O0, "フォルダを選んでください(キャンセルで終了します)", _ &H1 + &H10, "C:\1") If myPath Is Nothing Then Exit Do Set src = fso.GetFolder(myPath.Items.Item.Path) ' 対象フォルダの指定 For Each Filename In src.Files FileEx = fso.GetExtensionName(Filename) ' ファイル名から拡張子を抜き出す If LCase(FileEx) = "txt" Then ' 拡張子を小文字化してから比較 tmpMessage = tmpMessage & Filename & vbNewLine End If Next Loop WScript.Echo tmpMessage '-------------------------------------------------------
お礼
取り敢えずソースから貼付け→少し改変して動作確認して動作した所 確かに自分の求める答えはこれだと思いました。 tmpMessageに答えを送くり続ければそれは蓄積されて WScript.Echo tmpMessage って事みたいですね。 凄くシンプルな形なので参考にさせて頂きますありがとうございます!!