
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名と同名のフォルダを...
-
VBA 最新のフォルダ取得
-
Windows10でコマンドプロンプト...
-
デスクトップの画像をhtmlに表...
-
【マクロ】ファイル名の日付に...
-
API関数(DLL)の呼び出しにお...
-
フォルダにリンクを貼りたい
-
バッチファイル フォルダを...
-
Excelで指定したフォルダに保存...
-
フォルダを開いて、閉じるのプ...
-
VBS サブフォルダの再帰処理に...
-
ファイル名から該当フォルダへ移動
-
Let’s Encryptでwebroot設定な...
-
ファイルとフォルダのどちらも...
-
ツリービューを使って、エクス...
-
excel VBA Dirにて検索したフォ...
-
フォルダのサイズを取得したい
-
ディレクトリ名変更してコピー...
-
【マクロ】フォルダにファイル...
-
バッチファイル:ファイルのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
デスクトップの画像をhtmlに表...
-
ファイル名と同名のフォルダを...
-
会社のネットワーク上のファイ...
-
ExcelのVBAでフォルダ指定がで...
-
Excelで指定したフォルダに保存...
-
VBA フォルダの複数選択ができない
-
【マクロ】ファイル名の日付に...
-
VB.NRT FolderBrowserDialogを...
-
【マクロ】フォルダにファイル...
-
ThisWorkbookがあるフォルダ更...
-
ディレクトリ名変更してコピー...
-
(C#)フォルダを指定するダイ...
-
VB6で7-ZIPのAPIを使用した圧縮...
-
VBプロジェクトでのフォルダ構...
-
パス名に2バイト文字(マルチバ...
-
Debug フォルダは消していいの?
-
フォルダにリンクを貼りたい
-
フォルダAから1つのファイルだ...
おすすめ情報