Windowsでクリップボードの内容をコマンドで受け渡す方法

Windowsでクリップボードの内容をコマンドで受け渡す方法

Windows環境で、コマンドプロンプトやPowerShellで作業していて、コマンドの実行結果をコピーしたいときや、逆にクリップボードの内容をコマンド処理で受け取りたいとき、皆さんはどうしていますか?

コマンドの実行結果をクリップボードにコピーする場合は、ファイルにリダイレクトしてそのファイルを開いてコピーしたり、画面を範囲選択してコピーする方法が思いつきます。

逆にクリップボードの内容をコマンド処理で受け取りたい場合は、クリップボードの内容をテキストファイルなどに一度保存して、それをリダイレクトで読み込むといった方法が思いつきます。

が、上のようなことをしなくても、コマンド操作だけでコマンドの実行結果を直接クリップボードにコピーしたり、逆にクリップボード内容を取得してコマンドラインで処理したりできます。

そこでここでは、Windows 10でコマンド操作だけでコマンドの実行結果をクリップボードにコピーしたり、クリップボードからデータを取得する方法を紹介します。

コマンドでクリップボードにコピー

コマンドプロンプトやPowerShellで、コマンドの実行結果などをクリップボードにコピーするには、clip.exeやSet-Clipboardコマンドレットが利用できます。

clip.exeは、標準入力から渡されたテキストデータをクリップボードにコピーできるコマンドで、たとえば、以下のようにコマンドを実行すると、dirコマンドの実行結果をクリップボードにコピーできます。

> dir | clip

また、リダイレクトを使えば、テキストファイルの内容をクリップボードにコピーすることもできます。

> clip < sample.txt

PowerShellでSet-Clipboardコマンドレットを利用するときは、文字列やディレクトリの内容、ファイルの内容をクリップボードにコピーできます。

たとえば、文字列をクリップボードにコピーするときは、以下のようにコマンドを実行します。

PS> Set-Clipboard -Value "本日は晴天なり"

フォルダーの内容をクリップボードにコピーするときは、以下のようにコマンドを実行します。

PS> Set-Clipboard -Path "E:\Test\"

 ファイルの内容をクリップボードにコピーするときは、以下のようにコマンドを実行します。

PS> Get-Content E:\sample.txt | Set-Clipboard

クリップボードの内容をコマンドで取得

クリップボードの内容を取得する場合は、PowerShellの「Get-Clipboard」コマンドレットが利用できます。

Get-Clipboardコマンドを実行すれば、クリップボードに格納されている内容を標準出力として取得でき、パイプなどでほかのコマンドに渡したりできます。

PS> Get-Clipboard

なお、Get-Clipboardコマンドレットで取得したデータのうち、PowerShell上で操作できるのはテキストデータのみですが、取得したデータを直接ファイルに保存すれば、画像データや音声データも取り出せます。

たとえば、クリップボードにコピーされている画像データを取り出すときは、以下のようにコマンドを実行すれば画像ファイルとして保存することができます。

PS> (Get-Clipboard -Format Image).Save("E:\sample.jpg")

参考URL

Get-Clipboard (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn

Set-Clipboard (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn