この記事では、VBScriptを使用して、指定したフォルダ内のフォルダ構造を特定の階層まで抽出し、その結果をファイルに出力する方法について説明します。
過去記事: VBScript ファイルやフォルダの情報を取得する
スクリプトの作成
以下に、指定したフォルダ配下の指定した階層までのフォルダ一覧をファイルに出力するVBScriptの例を示します。このスクリプトは、特定の親ディレクトリ内にあるフォルダを指定した階層まで再帰的に探索し、その結果をテキストファイルに書き出します。
スクリプトの概要
1.フォルダの指定: スクリプトを実行する際に対象となる親フォルダを指定します。
2.階層の指定: 一覧を作成するフォルダの階層を指定します。
3.フォルダ探索: 再帰的にフォルダを探索し、結果をリスト化します。
4.ファイル出力: 探索結果を指定したファイルに出力します。
コード例
' フォルダ一覧を出力するVBScript Option Explicit Dim objFSO, objFolder, objSubFolder Dim startFolder, outputFile, maxDepth, currentDepth, objOutputFile ' ユーザーから入力を受け取る startFolder = InputBox("対象の親フォルダのパスを入力してください。", "フォルダ指定") If startFolder = "" Then WScript.Echo "フォルダが指定されていません。" WScript.Quit End If outputFile = InputBox("出力するファイル名を入力してください。", "ファイル名指定") If outputFile = "" Then WScript.Echo "出力先ファイル名が指定されていません。" WScript.Quit End If maxDepth = InputBox("探索する階層を入力してください(例: 3)", "階層指定") If Not IsNumeric(maxDepth) Then WScript.Echo "階層は数字で指定してください。" WScript.Quit End If ' ファイルシステムオブジェクトを作成 Set objFSO = CreateObject("Scripting.FileSystemObject") ' 親フォルダが存在するかチェック If Not objFSO.FolderExists(startFolder) Then WScript.Echo "指定されたフォルダが存在しません。" WScript.Quit End If ' 出力ファイルを作成(上書き) Set objOutputFile = objFSO.CreateTextFile(outputFile, True) ' 初期ディレクトリを取得 Set objFolder = objFSO.GetFolder(startFolder) ' フォルダの再帰的探索 currentDepth = 0 Call ListSubFolders(objFolder, currentDepth, maxDepth, objOutputFile) ' 終了メッセージ WScript.Echo "フォルダ一覧が " & outputFile & " に出力されました。" ' 出力ファイルを閉じる objOutputFile.Close ' サブフォルダを再帰的にリストアップする関数 Sub ListSubFolders(objFolder, currentDepth, maxDepth, objOutputFile) If currentDepth > maxDepth Then Exit Sub End If ' 現在のフォルダのパスを出力 objOutputFile.WriteLine objFolder.Path ' サブフォルダの探索 For Each objSubFolder In objFolder.Subfolders Call ListSubFolders(objSubFolder, currentDepth + 1, maxDepth, objOutputFile) Next End Sub
スクリプトの説明
1.ユーザー入力: InputBox関数を使用して、ユーザーから親フォルダのパス、出力するファイル名、そして探索する階層を入力させます。もし入力が不正であれば、適切なエラーメッセージを表示してスクリプトを終了します。
2.ファイルシステムオブジェクトの作成: CreateObject(“Scripting.FileSystemObject”)を使ってファイルシステムオブジェクトを作成し、フォルダの存在確認やファイルの作成を行います。
3.フォルダの再帰的探索: ListSubFoldersというサブルーチンで、指定されたフォルダ内のサブフォルダを再帰的に探索し、指定された階層までフォルダをリスト化します。
4.結果の出力: 結果は、指定されたファイルに書き込まれます。objOutputFile.WriteLineでテキストをファイルに出力します。
まとめ
VBScriptを使用することで、簡単に指定したフォルダ内のフォルダ一覧を出力することができます。再帰的な探索を利用することで、複雑なフォルダ構造にも対応でき、ファイルに出力することで後で確認や整理を行うことができます。
このスクリプトを基に、さまざまなフォルダ操作やファイル操作を自動化することが可能です。システム管理者やファイルの整理を行いたい方にとって、非常に役立つツールとなるでしょう。