もくじ
📝 はじめに
PowerShellでフォルダ内を一覧表示すると、
「フォルダは除外して、ファイルだけを確認したい」
「処理対象はファイルだけなのに、ディレクトリも混ざってしまう」
と感じたことはありませんか?
そんなときに役立つのが
Get-ChildItem -File です。
フォルダを除外し、ファイルだけを確実に抽出できるため、
実務スクリプトでは非常によく使われます。
- ファイルだけを一覧表示したい
- フォルダを除外して処理したい
- 一括処理の対象をファイルのみにしたい
✅ このコマンドでできること(要点)
- フォルダを除外してファイルのみ取得できる
- Where-Object を使わず簡潔に書ける
- -Recurse と組み合わせて再帰的に取得できる
- スクリプトの可読性が向上する
✅ Get-ChildItem -File でできること
-File は、
Get-ChildItem の結果から
ファイルだけを抽出するためのパラメーターです。
これにより、ディレクトリが混ざることなく、
ファイル操作に集中した処理を書くことができます。
考え方としては「書類だけを取り出す」と覚えると分かりやすいでしょう。
🧩 基本構文
Get-ChildItem -File
パスを省略した場合は、現在の作業ディレクトリが対象になります。
▶ 基本的な使い方(まずこれだけ)
🔹 カレント配下のファイルのみを表示する
Get-ChildItem -File
フォルダが含まれず、ファイルだけが表示されていれば成功です。
この結果が表示されていれば問題ありません。
🔹 指定フォルダのファイルのみを表示
Get-ChildItem C:\Logs -File
指定フォルダ直下のファイルだけが一覧表示されます。
エラーが出なければ正常に動作しています。
🛠 よく使われる指定例
🔹 再帰的にファイルのみ取得
Get-ChildItem -File -Recurse
サブフォルダを含め、すべてのファイルを対象にします。
🔹 特定の拡張子だけを抽出
Get-ChildItem -File -Filter "*.txt"
テキストファイルのみを一覧表示します。
💼 実務でよく使う使用例(応用)
🔹 ファイルだけを一括処理する
Get-ChildItem -File |
ForEach-Object {
$_.Name
}
🔹 更新日が古いファイルを抽出
Get-ChildItem -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }
- -Recurse と組み合わせて全ファイル取得
- -Filter で拡張子指定
- Where-Object で条件絞り込み
🧩 よくある勘違い・つまずきポイント
- -File を付けないとフォルダも混ざる
- PowerShell 5.1 以前では使えない
- -Directory と同時には指定できない
- -Recurse で対象が増えすぎることがある
- 拡張子指定は -Filter の方が高速
🔄 cmdとの違いについて
cmd では dir /a-d を使いますが、
PowerShell の Get-ChildItem -File は
より直感的で読みやすい指定が可能です。
オブジェクトとして扱える点も大きな違いです。
⚠ エラー・うまく動かないときの確認ポイント
- PowerShell のバージョンが 6 以降か
- -Recurse で対象が広がりすぎていないか
- -Filter の指定が正しいか
- アクセス権限の問題がないか
🧠 注意点
-File は
非常に便利ですが、PowerShell 6 以降でのみ使用可能です。
Windows PowerShell 5.1 を使っている場合は、
Where-Object { -not $_.PSIsContainer }
で代替できます。
📌 まとめ
- -File を使うとファイルのみを安全に抽出できる
- Where-Object より簡潔で読みやすい
- 再帰処理や一括処理で特に有効
- 次は -Directory との使い分けも覚えると便利
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- ファイルのみを抽出したい
- フォルダを除外して処理したい
