PowerShell: ファイル一覧を取得(フルパス・ファイル名のみ)
PowerShellでファイルの一覧を取得する場合、 Get-ChildItemコマンドレットを使います。 取得対象のフォルダを指定するだけです。 ファイルのみを取得する場合は-Fileオプションを指定、 フォルダ(コンテナ)のみを取得する場合は-Directoryオプションを指定します。 Get-ChildItemコマンドでフォルダを指定した場合はFileInfoオブジェクトが 戻り値となります。
Get-ChildItemコマンドの使用例
次のコードは「D:\temp」フォルダ内にあるファイル一覧を取得します。
$items = Get-ChildItem d:\temp -File foreach ($item in $items) { $item } # 実行結果 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2022/02/06 4:24 0 test1.txt -a--- 2022/02/05 3:59 0 test2.txt -a--- 2022/02/12 12:04 0 test3.ini
$itemsには複数のファイル情報が格納されるため、 foreach文でループして個々の値を取得します。
実行結果をみてわかるように、Get-ChildItemコマンドの戻り値は FileInfoオブジェクトです。 オブジェクトのプロパティを指定することでファイル名のみやフルパスなどの 必要な情報を取得できます。
「フルパス」を取得
フルパスを取得するにはFullNameプロパティを指定します。
$items = Get-ChildItem d:\temp -File foreach ($item in $items) { $item.FullName } # 実行結果 D:\temp\test1.txt D:\temp\test2.txt D:\temp\test3.ini
「ファイル名のみ」を取得
ファイル名のみを取得するにはNameプロパティを指定します。
$items = Get-ChildItem d:\temp -File foreach ($item in $items) { $item.Name } # 実行結果 test1.txt test2.txt test3.ini
ファイル一覧からファイルの更新時刻を取得
ファイルの更新時刻を取得するにはLastWriteTimeプロパティを指定します。
$items = Get-ChildItem d:\temp -File foreach ($item in $items) { $item.LastWriteTime } # 実行結果 2022年2月6日 4:24:27 2022年2月5日 3:59:51 2022年2月12日 12:04:32
取得するファイルの種類を指定
Get-ChildItemで取得するファイルの種類を限定(指定)するには ワイルドカーをを使います。 「*.txt」とすると拡張子が.txtのファイルのみを取得します。
# *.txtに限定 $items = Get-ChildItem d:\temp\*.txt -File
再帰的に取得
サブフォルダも含めて再帰的に取得する場合は
-Recurseオプションを指定します。
次のコードはD:\tempフォルダにあるファイルやフォルダを
再帰的に取得します。
$items = Get-ChildItem d:\temp -Recurse