HIRO's.NET
PowerShell Tips
HIRO's.NETは http://hiros-dot.net へ引っ越しました。
このページの新しいURLは http://hiros-dot.net/PowerShell/directory/directory10.htm です。
ブックマークされている方はお手数ですが http://hiros-dot.net へ修正お願いいたします。


HOME > PowerShell Tips > ディレクトリ操作 Tips メニュー
UPDATE:2008/02/15

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

まず、サブディレクトリを取得する方法ですが、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

つぎに、.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


SEO 仕事 掲示板 レンタルサーバー プロフ SEO