【初心者向け】PowerShellでデータを検索・抽出・並び替える方法|パイプラインの使い方をやさしく解説

apple-computer-on-desk プログラミング

「フォルダの中に大量のファイルがあって、特定のファイルを探すだけで一苦労……」

「日付がバラバラのデータを、更新順にきれいに並び替えて整理したい……」

毎日、こんな手作業に時間を取られていませんか?

Windowsに最初から入っている「PowerShell(パワーシェル)」を使えば、「大量のファイルから欲しいものだけを瞬時に見つけ出し、きれいに整列させる」という作業がわずか1秒で終わるようになります。

「プログラムなんて書いたことないし、一気に長い呪文を書くのは無理!」という方も安心してください。

PowerShellは「全ファイルを調べる」→「条件で絞る」→「順番に並び替える」というステップを、1行ずつ画面で結果を確かめながらパズルのように付け足していくことができます。

今回は、PowerShellでよく使う

  • ファイル一覧を取得する
  • 条件で絞り込む
  • 並び替える

という3つの基本操作を、パイプラインを使って少しずつ組み立てる方法を解説します。

この記事を読み終える頃には、自分でPowerShellのコマンドを組み立てられるようになります。

💡「そもそもPowerShellって何?」「どうやって起動するの?」という全体像から知りたい方は、まずこちらをご覧ください。

PowerShellの基本!!フォルダーとファイルの操作
PowerShellとはPowerShellは、Windowsを効率的に操作するためのコマンドラインシェル、スクリプト言語です。Windowsにはプレインストールされており、従来のコマンドプロンプトよりも強力で、Windowsの管理の自動化…

1. コマンドの基本ルール:「動詞-名詞」の組み合わせ

PowerShellでパソコンに命令を出すときの文字(コマンド)には「基本的なルール」があります。

それは「動詞(~せよ)- 名詞(何を)」という英語の組み合わせでできているということです。

今回メインで使うのは、フォルダの中身(子要素=チャイルドアイテム)を「取ってくる(ゲットする)」という命令です。

Get-ChildItem  # フォルダの中身(ChildItem)を、取ってきなさい(Get)

英語を丸暗記する必要はありません。

「情報を取ってくるから、最初は Get- から始まるんだな」というルールだけ頭に置いておいてください。

2. 実践:パイプラインで育てる「調べる・絞る・並び替える」3ステップ

ここからが本題です。

一気に完成形を書くのではなく、1つのコマンドごとに画面でデータがどう変わるかを「目で確認しながら」プログラムを書いていきましょう。

今回は、PowerShellの最強機能である「パイプライン( | )」を使います。

PowerShellのパイプラインとは?

PowerShell最大の特徴が「パイプライン( | )」です。

パイプライン(|)には「左側のコマンドの実行結果を、そのまま右側のコマンドへ渡す」という役割があります。

パイプラインを使うことで、一つひとつのコマンドを組み合わせて複雑な処理を作れるようになります。

難しく考える必要はありません。

「前の結果を次へ渡す」

これだけ覚えておけば十分です。

PowerShellでは、この仕組みを利用して「取得 → 絞り込み → 並び替え → コピー」というように処理をつなげていきます。

3つのステップで、使い方を見ていきましょう。

【ステップ1:調べる】まずは全データを引っ張ってくる

まずは、対象のフォルダの中にどんなファイルがあるのか、すべての情報を画面に引っ張ってきます。

PowerShellの画面に、次の1行を打ち込んでEnterキーを押してみましょう。

Get-ChildItem

実行すると、画面にファイルやフォルダのリストが「全部」ズラッと表示されます。

「よし、まずは全てのファイルがちゃんと見えているな」と目で確認できたら、ステップ1はクリアです。

実行するときにエラーが出た場合は、次の記事が参考になるかもしれません。

PowerShellスクリプトの実行禁止エラー(ExecutionPolicy)を解除する方法|初心者向けに安全な設定を解説

【ステップ2:絞る】パイプラインで「欲しいものだけ」残す

ステップ1で出た山のようなリストから、Excelのフィルター機能のように「欲しいものだけ」に絞り込みます。

ここでパイプ( | )を使って、ステップ1の結果を次の「絞り込みの命令(Where-Object)」へ引き渡します。

ここで使う Where-Object は、「条件に一致したものだけ残す」コマンドです。

たとえば「エクセルファイル(.xlsx)だけ」に絞り込みたいときは、後ろにこう付け足します。

Get-ChildItem | Where-Object Extension -eq ".xlsx"

Extension は「拡張子(ファイルの種類)」、-eq は「~と等しい(equal)」という意味です。

これを実行すると、さっきまで画像やテキストも混ざってズラズラ出ていたリストが一変し、画面には「.xlsx」のファイルだけがシュッと減って表示されます。

💡 実務でよく使う他の「絞り込み」パターン

  • 1MBより大きいファイルだけに絞る: Get-ChildItem | Where-Object Length -gt 1MB (※ -gt は「~より大きい(greater than)」の意味)
  • ファイル名に「重要」という文字が含まれるものだけに絞る: Get-ChildItem | Where-Object Name -like "*重要*"

画面を見て「狙い通り、欲しいファイルだけに絞り込めたぞ」と確認できたら、ステップ2も成功です!

【ステップ3:並び替える】パイプラインで「きれいに整列」させる

絞り込みまで完璧にできたら、最後に「順番をきれいに並び替える命令(Sort-Object)」を、さらにもう1つのパイプでつなぎます。

Sort-Object は、「指定した項目を基準にデータを並び替える」コマンドです。

Excelで「並び替え」を実行するイメージとほぼ同じです。

たとえば、ステップ2で絞り込んだエクセルファイルを、「更新日時が新しい順(最新順)」に並び替えたいときは、最後にこう付け足します。

Get-ChildItem | Where-Object Extension -eq ".xlsx" | Sort-Object LastWriteTime -Descending

LastWriteTime は「更新日時」、-Descending は「大きい順(降順)」という意味です。

これを実行すると、バラバラの順番だったエクセルファイルたちが、更新日時が新しいものから古いものへと、上からピシッと綺麗に整列して表示されます。(逆に古い順にしたいときは、最後の -Descending を消すだけでOKです)。

どうでしょうか?一気に書くと難しそうに見える長い1行ですが、

  1. Get- で、まずは対象の情報を「調べる」
  2. | でつないで、必要なものだけに「絞る」
  3. | でさらにつないで、綺麗に「並び替える」

というように、1つずつ順に組み立てていけば、初心者でも迷子になりません。

3. 自分で色々試せるようになる!応用を支える2つのパーツ

この「1歩ずつ組み立てる方法」に慣れてきたら、次の2つのパーツを覚えることで、自動化できる作業の幅がグンと広がります。

① 「変数( $箱 )」で場所を固定する

毎回「C:\Users\Desktop\Work\Documents...」のような長いフォルダの場所(ファイルパス)を何回も書くのは面倒ですし、打ち間違えの元になります。

そこで、文字や場所を1つの「ラベル付きの箱」にしまっておく仕組み(変数)を使います。

PowerShellでは、変数名の先頭に $ を付けることで「値を保存する箱(変数)」を作れます。

$folder = "C:\Users\Desktop\Work"
Get-ChildItem -Path $folder | Where-Object Extension -eq ".xlsx"

こうして1行目で $folder という箱に場所をしまっておけば、2行目以降は短い文字で使い回せます。

もし後から「別のフォルダで同じことを試したいな」と思ったときも、1行目のフォルダ名だけを書き換えれば、後ろのプログラム全体が勝手に連動してくれるのでとてもラクちんです。

② 「繰り返し( ForEach-Object )」で個別に処理する

「調べる」→「絞る」→「並べ替える」などで仕上がったリストに対して、最後に「1個ずつ名前を一括変更する」「1個ずつ別のフォルダにコピーする」といったアクションを実行してくれるのが「繰り返し (ForEach-Object)」です。

例えば

  • 名前変更
  • コピー
  • 削除
  • 圧縮

などの処理をまとめて実行できます。

絞り込んだファイルに対して、ファイル名の頭に「【確認済み】_」という文字をくっつけてみます。

手作業ならファイルを選んで、右クリックして、名前を変更して……をいう作業をファイルの数だけする必要がありますが、PowerShellを使えば一瞬です。

パイプラインの最後にForEach-Objectをつなぎます。

Get-ChildItem | Where-Object Extension -eq ".xlsx" | ForEach-Object { Rename-Item $_ -NewName "【確認済】_$($_.Name)" }

{ Rename-Item ... } の中身が、「1個ずつ名前を変えなさい」という具体的な処理の命令です。

4. まとめ:まずは小さな「実験」から始めよう

PowerShellを使って業務効率化をするための第一歩は、どこかのサイトから長い完成形のプログラムをそのままコピペすることではありません。

「1つのコマンドを打って、結果を見る。良さそうなら、パイプ (|) で次につなげて、また結果を見る」

この安全な実験の繰り返しこそが、自分で自由に自動化ツールを作るための確実な王道です。

まずはあなたのパソコンの中に、中身が消えてもいい「テスト用のフォルダ」を1つ作って、いくつか適当なファイルを放り込んでみてください。

そこで Get-ChildItem と打ち込んで、中身が表示されるのを確認することから始めてみましょう?

【初心者向け】PowerShellでUI自動化!インストール不要のRPA入門
追加ツールは一切不要!Windows標準のPowerShellを使い、初心者でも5分でできるUI自動化(UIオートメーション)のチュートリアルを現役エンジニアが解説。メリット・デメリットから堅牢なコードの書き方、エラー対策まで網羅した決定版です。
AIで仕事を効率化する方法|初心者でも今日からできる活用術
AIで仕事を効率化する方法を初心者向けに解説します。AIは完璧な成果物ではなく「60点の下書き」を作らせるのがコツ。メール作成を例に、プロンプトの書き方や業務自動化の始め方、活用時の注意点まで分かりやすく紹介します。
タイトルとURLをコピーしました