はじめに

毎日 Excel や Slack、メールで「改行コードが入ったまま貼り付けてしまって気持ち悪い…」と感じている方、または「社外秘キーワードを含んだまま画面共有してしまった…」というヒヤリハットを経験した方に向けた記事です。
Windows 10 には「Windows キー + V」で履歴が見れる新しいクリップボードがありますが、「一部だけ削除」は標準ではできません。本記事では、PowerShell を使って「指定文字列だけを削除したバージョン」をクリップボードに戻す方法を解説します。
最終的には右クリックメニューからワンクリックで実行できるようになるので、普段使いの PC 作業が少し快適になります。

前提知識

  • Windows 10 build 1809 以降(PowerShell 5.1 以降)を利用していること
  • PowerShell の実行ポリシーが RemoteSigned 以上であること(Set-ExecutionPolicy RemoteSigned -Scope CurrentUser で変更可)
  • レジストリの書き換えに抵抗がないこと(右クリックメニュー登録時)

なぜ「部分削除」が必要なのか

クリップボードの内容をそのまま使うと以下のような不便があります。

  1. 改行コードが残ると Excel のセルが複数に分断される
  2. 社外秘キーワード(社名・プロジェクトコードなど)が残ったまま Slack にポストしてしまう
  3. 正規表現置換が使えるエディタを開くまでもない「ちょっとした削除」が面倒

この「ちょっとした削除」を「コピー → 右クリック → 削除実行 → 貼り付け」の 4 ステップで完結させるのが本記事のゴールです。

PowerShell 一発スクリプトの作り方

ステップ1:スクリプトファイルを作成する

好きなフォルダ(例:C:\Tools\ClipTrim.ps1)に以下を保存します。

Powershell
# ClipTrim.ps1 param( [string]$RemovePattern = '\r?\n' # デフォルトは「改行」削除 ) Add-Type -AssemblyName System.Windows.Forms $text = [System.Windows.Forms.Clipboard]::GetText() if (-not $text) { exit } $trimmed = $text -replace $RemovePattern, '' # 空文字で置換=削除 [System.Windows.Forms.Clipboard]::SetText($trimmed)

ポイントは [System.Windows.Forms.Clipboard] を使うことで、外部モジュールをインストールしなくても .NET Framework 標準でクリップボードにアクセスできることです。

ステップ2:引数を外から渡してみる

PowerShell を開いて以下を実行すると、クリップボードの改行が一瞬で消えます。

Powershell
C:\Tools\ClipTrim.ps1

社外秘キーワード「ABC-12345」を削除したいときは正規表現を渡すだけ:

Powershell
C:\Tools\ClipTrim.ps1 -RemovePattern 'ABC-\d+'

ステップ3:レジストリに右クリックメニューを登録する

レジストリ エディタ(regedit)で以下のキーを新規作成:

HKEY_CLASSES_ROOT\Directory\Background\shell\ClipTrim
    (既定) = "クリップボードから改行削除"
HKEY_CLASSES_ROOT\Directory\Background\shell\ClipTrim\command
    (既定) = "powershell.exe -WindowStyle Hidden -File C:\Tools\ClipTrim.ps1"

これでデスクトップの空白を右クリックして「クリップボードから改行削除」が選べるようになります。
※ フォルダ内の背景を右クリックしても表示されます。

ステップ4:アイコンを付けて見た目を整える

ClipTrim キーに新規文字列値 Icon を追加し、任意の .ico ファイルパスを指定するとアイコンが表示されます。
例:C:\Tools\clip.ico

ハマりどころと解決策

現象 原因 解決策
実行しても何も変わらない クリップボードが空、あるいは PowerShell の実行ポリシーが Restricted Get-ExecutionPolicy で確認し、Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
日本語が文字化ける コンソールのコードページが 932 以外 スクリプト内で [Console]::OutputEncoding = [Text.Encoding]::UTF8 を追加
右クリックメニューが表示されない レジストリのパスが間違っている、あるいはエスケープ文字 powershell.exe -File "C:\Tools\ClipTrim.ps1" のようにダブルクォートで囲む

応用編:複数パターンを切り替える

レジストリに複数のキーを作れば、用途別にすぐ使えるようにできます。

例:「改行削除」「全角スペース削除」「社外秘キーワード削除」の 3 つを登録

shell
├─ClipTrimCR
│   ├─(既定) = "改行削除"
│   └─command = "powershell.exe -File C:\Tools\ClipTrim.ps1"
├─ClipTrimSpace
│   ├─(既定) = "全角スペース削除"
│   └─command = "powershell.exe -File C:\Tools\ClipTrim.ps1 -RemovePattern ' '"
└─ClipTrimSecret
    ├─(既定) = "社外秘キーワード削除"
    └─command = "powershell.exe -File C:\Tools\ClipTrim.ps1 -RemovePattern 'ABC-\\d+|ProjectX'"

まとめ

今回は Windows 10 標準の PowerShell だけで「クリップボードの一部分を削除」する方法を紹介しました。

  • 外部ツール不要、レジストリ登録で右クリック一発
  • 正規表記に対応しているので柔軟な削除が可能
  • 複数パターンを登録すれば用途に応じて即実行

スクリプトは 10 行程度と短く、会社のポリシーでフリーソフトが使えない環境でも導入しやすいはずです。
次回は、Power Automate Desktop と連携して「コピーした瞬間自動で削除」する方法を紹介する予定です。

参考資料