落とし穴
はまりポイント
Powershell の Get-ChildItem コマンドを使用して任意のディレクトリからファイルやディレクトリの一覧を取得する場合
よくある落とし穴について
極めて重要
任意のディレクトリの子アイテム一覧を取得するには、Path パラメータ か LiteralPath パラメータを使用します。
Path パラメータはワイルドカード指定ができるのに対して、LiteralPath パラメータは入力された文字がそのまま解釈されるという違いがあります。
Path パラメータによる一覧取得
任意のディレクトリのファイル一覧を取得するには、以下の書式を使用します。
Get-ChildItem -Path ディレクトリパス
ワイルドカードによるアイテムの取得
contract_20030621.txt、contract_20131001.txt のようにプレフィックスが同じファイルが複数ある場合、以下のようにワイルドカードを指定してファイルの一覧を取得することができます。
Get-ChildItem -Path contract_*.txt
LiteralPath パラメータによる一覧取得
任意のディレクトリのファイル一覧を取得するには、以下の書式を使用します。
Get-ChildItem -LiteralPath ディレクトリパス
C:¥workspace の一覧を取得したい場合は、以下のようにします。
Get-ChildItem -LiteralPath C:\workspace
Path パラメータと LiteralPath パラメータの違いについて
ファイル名やディレクトリ名には [] を使用することができます
contract[20030621].txt というファイルを作成することができます
このファイルを以下のようなコマンドで取得しようとしても、ヒットしません。
get-ChildItem -Path C:¥workspace¥contract[20030621].txt
Path パラメータを使用すると []が正規表現として認識されてしまうことが原因です
正規表現を使用しないのであれば、LiteralPath パラメータを使用しましょう。
get-ChildItem -LiteralPath C:¥workspace¥contract[20030621].txt