PowerShell を使用してファイルとフォルダーをフィルター処理する
-
PowerShell の
Get-ChildItem
コマンドレットを使用してファイルをフィルター処理する -
Get-ChildItem
エイリアス -
PowerShell の
Get-ChildItem
コマンドレットを使用してサブディレクトリ内のすべてのファイルを取得する -
PowerShell で
Get-ChildItem
コマンドレットを使用して特定の条件でファイルをフィルター処理する
特定の場所またはディレクトリ内にファイルが存在するかどうかを確認する必要がある場合があります。従来のコマンド dir
を使用することはできますが、特定のファイルをエクスポートするだけでは不十分です。このユースケースでは、Windows PowerShell の Get-ChildItem
コマンドレットを使用できます。
この記事では、ディレクトリ内のすべてのアイテムを取得し、そのフィルタースイッチパラメーターを利用するために使用する PowerShell Get-ChildItem
コマンドレットについて説明します。
Windows PowerShell の Get-ChildItem
コマンドレットは、特定の場所またはディレクトリにある子アイテムを取得します。たとえば、コマンドレットで指定された場所は、ファイルシステムディレクトリ、レジストリ、または証明書ストアです。また、言及されている子アイテムは、別のディレクトリ、サブフォルダ、またはファイルのいずれかです。
Get-ChildItem -Path C:\Temp
上記のコマンドで、Get-ChildItem
は、-Path
パラメーターを使用して指定されたパスから子アイテムを取得します。
Get-ChildItem コマンドレットを実行すると、PowerShell コンソールに、ファイル、ディレクトリとその Mode
、LastWriteTime
、Length
(ファイルサイズ)、および Name
プロパティが表示されます。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 18/01/2022 8:52 pm Windows PowerShell
d----l 20/12/2021 3:36 pm Zoom
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-a---l 16/05/2020 3:32 am (677) default.cpu1
-a---l 21/08/2019 9:06 am (2240) Default.rdp
-a---l 26/05/2021 8:24 am (63399) e-sig.jpg
-a---l 09/03/2020 10:48 pm (143) fan config.sfsm
-a---l 19/09/2020 12:07 pm (279515089) MCSA.rar
PowerShell の Get-ChildItem
コマンドレットを使用してファイルをフィルター処理する
-File
スイッチパラメータを使用して、パスまたはディレクトリ内のファイルのみを返す場合があります。
サンプルコード:
Get-ChildItem -Path C:\Temp -File
出力:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-a---l 16/05/2020 3:32 am (677) default.cpu1
-a---l 21/08/2019 9:06 am (2240) Default.rdp
-a---l 26/05/2021 8:24 am (63399) e-sig.jpg
-a---l 09/03/2020 10:48 pm (143) fan config.sfsm
-a---l 19/09/2020 12:07 pm (279515089) MCSA.rar
Get-ChildItem
エイリアス
Windows PowerShell は、Get-ChildItem
コマンドレットにデフォルトの組み込みエイリアス gci
を使用します。以下のスニペットの例のように、コマンドレットの代わりにエイリアスを使用して、より高速でシームレスなスクリプトを作成できます。
サンプルコード:
gci -Path C:\Temp -File
PowerShell の Get-ChildItem
コマンドレットを使用してサブディレクトリ内のすべてのファイルを取得する
ディレクトリとサブディレクトリ内のすべてのファイルを取得する場合は、-Recurse
スイッチパラメータを使用します。
サンプルコード:
gci -Path C:\Temp -Recurse - Force -File
-Force
パラメーターを使用すると、コマンドレットは、システムファイルや隠しファイルなど、ユーザーがアクセスできないアイテムを取得できます。Force パラメーターは、セキュリティ制限をオーバーライドしません。実装はプロバイダーによって異なります。PowerShell で Get-ChildItem
コマンドレットを使用して特定の条件でファイルをフィルター処理する
-Filter
パラメーターを使用すると、単一の式を使用して結果をフィルターで除外できます。-Filter
パラメータは、現在の作業ディレクトリを使用するため、-Path
パラメータを必要としません。
サンプルコード:
gci -Filter C:\Temp\* -Filter *.txt
複数の条件を受け入れる -Include
スイッチパラメーターを使用することもできます。これは、-Filter
パラメーターの優れた利点です。ただし、-Include
パラメーターでは、式に -Path
パラメーターが含まれている必要があることに注意してください。
サンプルコード:
gci -Path C:\Temp\* -File -Include CEF*.pdf, *.txt
複数の条件を受け入れることを除けば、-Include
パラメーターは正規表現でうまく機能するため、これは -Filter
パラメーターよりも用途の広い方法になります。
出力:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-Include
スイッチパラメーターを使用する場合、パスの最後にワイルドカードアスタリスク(*
)を含める必要があります。このワイルドカードは、-Include
パラメーターで定義された特定の拡張子を持つすべてのパスの子アイテムを照会していることを示します。Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn関連記事 - PowerShell File
- PowerShell で CSV ファイルを 1 行ずつ読み取る
- PowerShell でのファイルの最終書き込み時刻のクエリ
- PowerShell で大きなファイルを分割する
- PowerShell を使用してテキスト ファイルの内容を変数に格納する
- PowerShell を使用してファイルのブロックを解除する
- PowerShell でファイルをコピーして名前を変更する