テキストファイルを処理して「特定の行だけ抜き出したい」という場面は、ログ解析やデータ処理を行う際によくあります。PowerShellを使えば、シンプルなコマンドで効率的に抽出可能です。本記事では、PowerShellによる代表的な方法を解説します。
基本的な考え方
PowerShellでは、Get-Content コマンドレットでテキストファイルを1行ずつ取得できます。そこから条件を指定して、欲しい行をフィルタリングすれば目的の行を抽出できます。
方法1:行番号で抽出する
特定の行番号を指定して抽出するには配列インデックスを利用します。PowerShellは0から数えるので注意しましょう。
複数行をまとめて取得することも可能です。
方法2:条件で抽出する(文字列検索)
キーワードを含む行だけを抽出するには Select-String を使います。
この場合、ヒットした行番号と内容が出力されます。内容だけ欲しい場合は以下のように書けます。
方法3:正規表現で抽出する
複雑な条件にマッチさせたい場合は正規表現を活用できます。
方法4:範囲指定で抽出する
特定の行範囲を取り出したい場合は Select-Object を利用します。
まとめ
-
行番号で取得 → 配列インデックス
-
キーワードで取得 → Select-String
-
複雑条件 → 正規表現
-
範囲指定 → Select-Object
PowerShellを使えば、テキストファイルの解析や必要な行だけの抽出を簡単に自動化できます。ログファイル処理やデータ前処理など、日々の作業効率化にぜひ活用してみてください。
Windows環境でフォルダ内のファイル一覧を取得したい場面は多々あります。例えば、定期的なファイル管理や監査用の記録、またはバックアップ作業のために一覧をエクスポートしたい場合です。
PowerShellを使えば、簡単にフォルダ内のファイル一覧を取得し、そのままCSV形式で保存することができます。
この記事では、PowerShellでフォルダ内のファイル一覧を取得し、CSVに出力する方法を解説します。
基本コマンド
まずは基本となるコマンドです。
以下の例では、C:\Test フォルダ内のファイル一覧を取得し、filelist.csv に出力します。
各コマンドの意味
-
Get-ChildItem "C:\Test"
指定フォルダ内のファイルやフォルダを取得します。gci や dir と省略可能。
-
Export-Csv
取得結果をCSVに変換して保存します。
-
-NoTypeInformation
CSVの先頭に不要な型情報行を出力しないようにします。
-
-Encoding UTF8
CSVファイルの文字コードをUTF-8に指定します(文字化け防止)。
ファイルのみ取得する場合
フォルダ名は不要で、ファイルだけを取得したい場合は -File オプションを指定します。
サブフォルダも含めて取得する場合
サブフォルダ内のファイルもまとめて一覧化するには -Recurse を付けます。
|
|
Get-ChildItem "C:\Test" -File -Recurse | Export-Csv -Path "C:\Test\filelist_all.csv" -NoTypeInformation -Encoding UTF8 |
出力内容を絞り込む
CSVに出力する項目を指定することも可能です。例えば、フルパス、サイズ、更新日時 だけを出力する場合:
実行例イメージ
出力されるCSVファイルをExcelで開くと、以下のように一覧が表示されます。
| FullName |
Length |
LastWriteTime |
| C:\Test\document1.txt |
1234 |
2025/09/17 10:30:00 |
| C:\Test\image.png |
45678 |
2025/09/16 15:20:00 |
| C:\Test\subfolder\report.docx |
9876 |
2025/09/15 09:10:00 |
まとめ
-
Get-ChildItem でフォルダ内のファイル一覧を取得できる
-
Export-Csv を組み合わせることで、簡単にCSVへ出力可能
-
-File、-Recurse、Select-Object を使えば用途に合わせて柔軟に一覧化できる
PowerShellを使えば、手作業でリスト化する手間を省き、自動化できるのでぜひ活用してみてください。
「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。