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
No.1ベストアンサー
- 回答日時:
@IT:Windows TIPS -- Tips:ファイルの一覧情報リストを取得する
http://www.atmarkit.co.jp/fwin2k/win2ktips/310fi …
こちらが参考になると思います。
この回答への補足
早速ありがとうございます。
この例だと最下層まですべてのフォルダ検索してしまいますよね。
(例)
C:\A\B\C\D\○○.txt
C:\A\B\C\DD\○○.txt
C:\A\B\CC\E\○○.txt
C:\A\B\CC\EE\○○.txt
あるフォルダにあるサブフォルダのみ全検索。そのサブフォルダにあるフォルダについては固定で持たせるような方法がないでしょうか?
補足
>C:\A\B\C\D\
>A,C ,D については固定
と書きましたが、Dの下にあるフォルダについては全検索をしたいです。
C:\A\B\C\D\E
C:\A\B\C\D\EE
C:\A\B\C\D\EEE
のような感じです
よろしくお願いいたします。
No.4
- 回答日時:
> あるフォルダにあるサブフォルダのみ全検索。
そのサブフォルダにあるフォルダについては固定で持たせるような方法がないでしょうか?> strPath = InputBox("調べたいフォルダを絶対パスで入力してください。", "ファイル一覧", "c:\")
この起点となるフォルダの指定を
C:\A\B\C\
とすればいいのでは?
No.3
- 回答日時:
暇つぶしに作ってみました。
こんな感じのやつでしょうか?パターンは * で指定してください(複数指定可能)。
例) C:\A\*\C\D, C:\A\*\C\*
Option Explicit
Dim fso
Dim scanPath
Set fso = CreateObject("Scripting.FileSystemObject")
scanPath = WScript.Arguments(0)
ScanDirectory fso.GetDriveName(scanPath) & "\", Mid(scanPath, Len(fso.GetDrivename(scanPath)) + 1)
WScript.Quit 0
Sub ScanDirectory(ByVal dirPath, ByVal subDirPattern)
DebugPrint "dirPath : " & dirPath
DebugPrint "subDirPattern : " & subDirPattern
Dim dir
Dim subDir
Dim file
Dim nextDirPath
Dim nextSubDirPattern
If subDirPattern <> "" Then
' サブディレクトリパターンの指定がある場合
If InStr(1, subDirPattern, "*") > 0 Then
' パターンに * が含まれる場合
' 親ディレクトリのパスを取得(ex. C:\A\*\C -> C:\A)
nextDirPath = dirPath & Left(subDirPattern, InStr(1, subDirPattern, "*") - 1)
DebugPrint "Next dir path : " & nextDirPath
' 次のサブディレクトリパターンを取得(ex. C:\A\*\C -> \C)
nextSubDirPattern = Right(subDirPattern, Len(subDirPattern) - InStr(1, subDirPattern, "*"))
DebugPrint "Next sub dir pattern : " & nextSubDirPattern
If fso.FolderExists(nextDirPath) Then
Set dir = fso.GetFolder(nextDirPath)
' 次のサブディレクトリパターンを指定して検索
For Each subDir In dir.SubFolders
ScanDirectory subDir.Path, nextSubDirPattern
Next
Else
DebugPrint "Directory not found : " & nextDirPath
End If
Else
ScanDirectory dirPath & subDirPattern, ""
End If
Else
' サブディレクトリパターンが指定されていない場合
If fso.FolderExists(dirPath) Then
Set dir = fso.GetFolder(dirPath)
' ディレクトリ配下のファイルのパスを出力
For Each file In dir.Files
WScript.Echo file.Path & "," & file.DateCreated
Next
' サブディレクトリを再帰的に検索
For Each subDir In dir.SubFolders
ScanDirectory subDir.Path, ""
Next
Else
DebugPrint "Directory not found : " & dirPath
End If
End If
End Sub
Sub DebugPrint(ByVal message)
If False Then
WScript.Echo message
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
VBScript フォルダ以下からファイルの検索、コピー
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
会社のネットワーク上のファイ...
-
保存先のフォルダ名を指定した...
-
ダイアログでフォルダ名を取得...
-
【マクロ】ファイル名の日付に...
-
VBS サブフォルダの再帰処理に...
-
VBA フォルダ名に特定の文字を...
-
VBA:特定の文字を含むフォルダ...
-
C ファイル出力で、フォルダが...
-
マクロでネットワークドライブ...
-
Excelで指定したフォルダに保存...
-
[VB.net 2003] FileDialogでデ...
-
Excel VBA で フォルダ名の一部...
-
機種依存文字を含むフォルダ/フ...
-
VBA フォルダの複数選択ができない
-
excelマクロ 冒頭3文字が一致す...
-
【VBS】古い日付のフォルダを削...
-
Dreamweaverでイメージを挿入す...
-
30日前を残して過去の日付フォ...
-
getImageでのファイルパス
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
Excelのハイパーリンクについて...
-
デスクトップの画像をhtmlに表...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
excelマクロ 冒頭3文字が一致す...
-
会社のネットワーク上のファイ...
-
フォルダ内のPDFファイル名を変...
-
Access VBA で フォルダ権限...
-
VBA フォルダ名に特定の文字を...
-
【マクロ】ファイル名の日付に...
-
フォルダを開いて、閉じるのプ...
-
カレントフォルダって?
-
パス名に2バイト文字(マルチバ...
-
保存先のフォルダ名を指定した...
-
Excelで指定したフォルダに保存...
-
Debug フォルダは消していいの?
-
ExcelのVBAでフォルダ指定がで...
-
C ファイル出力で、フォルダが...
-
ExcelVBAでフォルダへのハイパ...
おすすめ情報