- 締切済み
VBSでのファイル一覧表示について
VBSでの質問です。。。 フォルダをの中をファイルを一覧表示させるようにしたいのです。 会社-事業部-所属課-営業-A-社員-employee1.txt、employee2.txt・・ B-社員 C-社員 上はすべてフォルダです。A、B、Cの下のそれぞれの 社員フォルダ以下にあるテキストファイルを一覧で表示したのです。 A、B、Cの下のフォルダがすべて社員フォルダという同一フォルダ名に なっている部分をどのように指定していくかで悩んでいます。 ネットで検索してみると、「再帰呼び出し」という処理を行う というような記述もあったのですが、理解が追いつかず質問を投稿させていただきました。 どなたかご教示いただければと思います。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- marbin
- ベストアンサー率27% (636/2290)
#1です。 配列を使った場合は↓の修正でいけました。 >ReDim Preserve ary(0 To cnt) ↓ ReDim Preserve ary(cnt)
- marbin
- ベストアンサー率27% (636/2290)
原始的な再起処理のサンプルです。 コメントアウト部分は配列に格納するものですが、 エクセルVBAでは成功しましたがVBSではエラーになりました。 Dim FSO Dim motofol Dim txpath 'Dim ary() 'Dim cnt dim str 'Sub test() Set FSO = CreateObject("Scripting.FileSystemObject") motofol = "フォルダのパス" &cnt = -1 str = motofol Call itiranget(FSO.GetFolder(motofol)) 'MsgBox Join(ary, vbCrLf) MsgBox str Set FSO = Nothing 'End Sub Function itiranget(ByVal objfol) Dim objfile Dim fpath Dim objsubfol Dim kaku kaku = "TXT" For Each objfile In objfol.Files fpath = objfile.Path If UCase(FSO.GetExTensionName(fpath)) = UCase(kaku) Then if str <> "" then str = str & vbcrlf str = str & objfile.Name 'cnt = cnt + 1 'ReDim Preserve ary(0 To cnt) 'ary(cnt) = objfile.Name End If Next For Each objsubfol In objfol.subfolders if str <> "" then str = str & vbcrlf str = str & objsubfol.Path 'cnt = cnt + 1 'ReDim Preserve ary(0 To cnt) 'ary(cnt) = objsubfol.Path Call itiranget(objsubfol) Next End Function