• 締切済み

VBSでのファイル一覧表示について

VBSでの質問です。。。 フォルダをの中をファイルを一覧表示させるようにしたいのです。 会社-事業部-所属課-営業-A-社員-employee1.txt、employee2.txt・・             B-社員    C-社員 上はすべてフォルダです。A、B、Cの下のそれぞれの 社員フォルダ以下にあるテキストファイルを一覧で表示したのです。 A、B、Cの下のフォルダがすべて社員フォルダという同一フォルダ名に なっている部分をどのように指定していくかで悩んでいます。 ネットで検索してみると、「再帰呼び出し」という処理を行う というような記述もあったのですが、理解が追いつかず質問を投稿させていただきました。 どなたかご教示いただければと思います。よろしくお願いいたします。

みんなの回答

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

#1です。 配列を使った場合は↓の修正でいけました。 >ReDim Preserve ary(0 To cnt) ↓ ReDim Preserve ary(cnt)

全文を見る
すると、全ての回答が全文表示されます。
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

原始的な再起処理のサンプルです。 コメントアウト部分は配列に格納するものですが、 エクセル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

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

関連するQ&A

  • vbsでのアスタリスクとファイル取り込み

    お世話になっております。 Vbsを使用して以下のことを実施したいと思っております。 ■実施したいとこ あるフォルダの中にある「.dat」ファイル(複数あります)をテキストファイルに書き込みを行いたい。 ■例 Aフォルダの中にB.dat、c.dat、e.datとファイルがあります。 この3つのファイルをF.txtに書き込みを実施したいと思っております。 以下を使用してファイル一覧を取り込むのはみつけたのですが DIR関数がVBSでは使用できませんでした。 strDirName = Con_FolderName & "\*.dat" f_logfile = Dir(strDirName) よろしくお願いいたします。

  • batコマンド ファイルの一覧

    batファイルを使用して、指定したフォルダの中にあるテキストファイルの一覧を「一覧.txt」というファイルを新規作成して、そのファイル内に記載したいのですが何か良い方法はないでしょうか? ご教示お願いします。 (例) フォルダAの中にテキストA、テキストB、テキストCがある。 batファイルを実行すると同フォルダ内に「一覧.txt」が作成され、ファイルを開くと テキストA テキストB テキストC と記載されている。

  • VBSによるファイルコピー

    教えてください。 Aフォルダの中にファイルが3つ有るとします。 あ.jpg い.jpg COPY.VBS Aフォルダ内 COPY.VBS を実行すると、 あ.jpg→C:\ い.jpg→C:\PIC とファイルを異なる場所に移動したいのです。 上記の処理をする場合、Aフォルダがどちらか 決まった場所に置いて有る(C:\等)の場合は 解るのですが、実行者がAフォルダをどこに 置き実行するか解りません、VBSから見たときに 自分(vbs)と同じフォルダに有るファイル と言うパスで上記のファイル移動を実現する事は 可能でしょうか? 以上よろしくお願いします。

  • バッチファイルでパスとファイル名を併記した一覧を書き出したい

    バッチファイルでパスとファイル名を併記した一覧を書き出したい いつもお世話になってます。また相談させていただきたいです。 下のようにバッチファイルでカレントフォルダ内のパスとファイル名を併記し、ファイル名一覧を書き出したいのですが、 c:\test\123.txt c:\test\abc.txt ・ ・ c:\test\いろは.txt 欲をいえば下の様に、 "c:\test\123.txt" "c:\test\abc.txt" ・ ・ "c:\test\いろは.txt" 『dir /b /w *.*> fname_ichiran.txt』 ↑ ↑ ↑ をどのように変更すれば良いのでしょうか? 今回もどなた様かお知恵を貸して下さい。よろしくおねがいします。

  • VBS サブフォルダの再帰処理について

    VBScriptでファイルリストを出力しようと考えています。 そこでフォルダ内のファイルを再帰的に検索したいのですが、上手くいきません。 C:\A\B\C\D\○○.txt C:\A\BB\C\D\××.txt C:\A\BBB\C\D\△△.txt のようにB,BB,BBBの部分のみ可変にしたいのです。 例えば C:\A\B\CC\D\○○.txt C:\A\B\CCC\D\○○.txt のような B以外のフォルダのサブフォルダについては再帰検索はいきたくありません。 (A,C ,D については引数で与えようと考えています。) よいロジックはないでしょうか? ご存知の方がいらっしゃいましたらぜひ教えてください。 出力形式は ファイル名,作成日時 以下 色々参考にして作成したプログラム。 これだと指定フォルダ以下すべて検索にいってしまいます(-_-;) --------------------------------------------------------------- Dim fso Dim folder Set fso = CreateObject("Scripting.FileSystemObject") Dim pass pass ="C:\" & args.item(0) & "\" Dim subFolder For Each subFolder In folder.SubFolders ShowSubfolders FSO.GetFolder(pass) Next Sub ShowSubFolders(Folder) Dim file For Each file In folder.Files WScript.Echo _ file.Name & "," & _ file.DateCreated Next For Each subFolder In folder.SubFolders ShowSubFolders subFolder Next End Sub

  • クラスパス配下のファイル名一覧取得

    ある、クラスパスの通ったフォルダ(仮にdir)があったとして そのフォルダ内にあるファイル名一覧を取得したいと考えております。 dir/ ->a.txt ->b.txt ->c.txt 結果:a.txt、b.txt、c.txt ClassLoader クラスなどを用いて取得しようと考えたのですが、 getSystemResource() メソッドなどはファイル名まで指定しないと 取得できないみたいで、現時点で望む処理ができない状態です。 フォルダまでの絶対パスの指定はしたくないため、 Fileクラスも使用できない状態です。 このような処理をやったことがある方は、 どうかご教授お願いいたします。

  • 再帰呼び出しで求めたい経路を表示させたい!

    以前も「すべての経路を求めるには」というような質問をして再帰呼び出しにより無事解決することが出来ました。 しかし、少しわからないところがあります。 例えばaはb1とb2に接続されていてb1とb2はそれぞれc1,c2とc3,c4に接続されているとします。すべての経路は全部で4本ですね。 これを再帰呼び出しの中にprintf文を用いて表示させたところ a->b1->c1 c2 b2->c3 c4 というような感じで表示されたと思います。これは再帰呼び出しの性質で分岐があった以前の場所へ戻って探索を続けるからだというのは理解できました。しかし、実際は a->b1->c1 a->b1->c2 a->b2->c3 a->b2->c4 というように表示させたいです。何かこれを記憶するための変数が必要だと思うのですが、それを用いて上のように表示させるほう方法が思いつきません。 さらに、a->b2->c3というように特定の経路だけを選択して表示させたいです。アドバイスよろしくお願いします!

  • バッチファイルでのファイル一覧取得

    初心者です。初めてバッチファイルを作成しようと考えていますが、作成方法がわかりません。 環境はWindwsです。 C:\BディレクトリにAというフォルダがありその中に複数のテキストファイルが保存されています。 そのファイルの一覧をBディレクトリ直下のfile_name.txtへ書き込みたいのですが、dirコマンドでファイルの一覧が取得できるのはわかったのですが、ディレクトリ移動してファイルを書き込む方法がわからず困っています。 更にAフォルダには毎日違うテキストファイルが保存されるため、次回バッチを起動した際にはfile_name.txtの中身をクリアして新規に書き込みをしたいと考えています。 初心者で質問内容に不備があるかもしれませんが、ご教授お願いします。

  • 再度:VBSで指定したフォルダー内のファイルを書き出さないようにする

    先ほども似たような質問をしました。 あるフォルダの中にあるファイル名の一覧をファイル"f.name.txt"を書き出したいのですが"新しいフォルダ"のなかにあるファイルは書き出さないようにしたいです。下記のVBSは"新しいフォルダ"のなかに更にフォルダが階層的に存在するときには"新しいフォルダ"の中のファイルも全て書き出してしまいます。 "新しいフォルダ"の中にフォルダがない場合は正しく動きます。 "新しいフォルダ"の中にフォルダが階層的にあっても"新しいフォルダ" の中にあるファイル名を書き出さないようにするにはどうしたらよいのでしょう? ************************************************************** Set FSO = CreateObject("Scripting.FileSystemObject") Set fl = WScript.CreateObject("Scripting.FileSystemObject") Set abc = fl.CreateTextFile("f.name.txt") ShowSubfolders FSO.GetFolder(".") Sub ShowSubFolders(Folder) If Folder.Name <> "新しいフォルダ" Then For Each File in Folder.Files 'Folder内のファイルを列挙する Fname = File.name abc.Write Folder & "\" & Fname & vbCrLf Next End If For Each Subfolder in Folder.SubFolders 'Folder内のフォルダを列挙する ShowSubFolders Subfolder '再帰呼び出し Next End Sub abc.Close

  • ファイルの内容を検索を行うVBS

    エクセルのA列に検索ワードがそれぞれ1つずつ入っています。特定のフォルダ内にある全HTMLファイルの中身を検索し、各検索ワードが1つでも含まれていた場合、そのファイル名をエクセルのB列の対応する行に記入していくというVBSを作成する事は可能でしょうか? 例えば 検索フォルダ:C:\\aa ___ A ______ B _________ 1__あい__ h.html,g.html,s.html 2__うえ__ i.html 3__おか__ j.html,e.html 4__きく__ 該当なし 5__けこ__ :___:    : 上の2行目の例だと、「C:\\aa」フォルダの中にある全HTMLファイルのうち「うえ」という文字列が含まれているファイル名がi.HTMLということになります。 つまり、A列を読み込んでB列に自動記入していくVBSです。 VBS初心者なもので、どなたかお分かりになる方がいらっしゃいましたら是非教えて頂きたいです。よろしくお願いします。