VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。
残念ながら指定フォルダ内のすべてのサブフォルダを取得するメソッドは.NETでは提供されていません。そこで、System.IO名前空間のDirectoryクラスのGetDirectoriesメソッドを再起的に使用して実現しようと思います。
書式:
Private Sub GetSubDirs(
ByVal SearchDir As String, _
ByRef FindDirs As ArrayList _
)
引数:
SearchDir : 検索するフォルダパス文字列
FindDirs : 見つかったサブフォルダ一覧
戻り値:
なし
最初は第2引数はString型を使用しようかな、と思ったんですが再起的に検索してフォルダの一覧を追加していく必要があるために、ArrayList 型を使用することとしました。ArraListはAddメソッドを持っており、取得したフォルダ名を追加していけるからです。
Imports System.IO : :省略 : Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '変数の宣言 Dim strSubDirs As New ArrayList '[C:\Work]のサブフォルダすべてを取得する GetSubDirectories("C:\Work", strSubDirs) '取得したサブフォルダ名を表示する For Each strSubDir As String In strSubDirs Console.WriteLine(strSubDir) Next End Sub '========================================================================== '= '= GetSubDirectories '= '= 説明: '= 指定したフォルダ以下にあるサブフォルダを取得する '= '= 引数: '= SearchDir :検索するフォルダ名 '= FindDirs :見つかったサブフォルダ名 '= '= 戻り値: '= なし '= '= HIRO's.NET All rights Reserved '========================================================================== Private Sub GetSubDirectories(ByVal SearchDir As String, ByRef FindDirs As ArrayList) '変数を宣言 Dim strDir As String 'サブフォルダを取得する For Each strDir In Directory.GetDirectories(SearchDir) 'ArrayListに取得したフォルダを追加 FindDirs.Add(strDir) '再帰呼び出しでサブフォルダを取得する GetSubDirectories(strDir, FindDirs) Next End Sub