HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


PowerShellの開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > PowerShell Tips > ディレクトリ操作 Tips メニュー

10.指定したディレクトリのサブディレクトリを取得する

 
UPDATE:2008/02/12    
 



つぎに、.NET Frameworkを利用した方法を紹介します。

指定したディレクトリ以下にあるサブディレクトリを取得するには、System.IO.DirectoryのGetDirecoriesメソッドを使用することで取得することができます。

まず最初にSystem.IOをロードします。

List2

PS C:\Work> [reflection.assembly]::LoadWithPartialName("System.IO")

つぎに、GetDirectoriesメソッドを使用して、任意のディレクトリ以下にあるサブディレクトリを取得します。

書式は
[System.IO.Directory]::GetDirectories("任意のディレクトリ")
です。
List3では、"C:\Work"以下にあるサブディレクトリを取得しています。

List2

PS C:\Work> [System.IO.Directory]::GetDirectories("C:\Work")
C:\Work\256835_PSTemplates
C:\Work\ACS001
C:\Work\ACS002
C:\Work\ACS003
C:\Work\ACS004
C:\Work\ACS005

まず、サブディレクトリを取得する方法ですが、Get-ChildItemコマンドレットを使用します。

get-ChildItemコマンドレットを単独で実行すると、左から順にMode, LastWriteTime, Length, Nameの順に表示されます。
Modeが"d----"と表示されているのがディレクトリですので、パイプを使用してディレクトリだけに絞り込みたいと思います。

書式は
Get-ChildItem -path "任意のフォルダ" | where { $_.mode -match "d" }
です。

リスト1ではC:\Workのサブディレクトリを取得しています。

List1

PS C:\Work> Get-ChildItem -path C:\Work | where { $_.mode -match "d" }


ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work


Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2007/12/25 10:59 256835_PSTemplates
d---- 2007/11/09 11:02 ACS001
d---- 2007/08/28 14:53 ACS002
d---- 2007/08/28 14:53 ACS003
d---- 2007/08/28 14:53 ACS004
d---- 2007/08/28 14:53 ACS005
d---- 2007/08/28 14:54 Backup