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

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

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

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

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

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

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

WindowsコマンドやPowerShellの実行結果をファイルに出力する方法
ここでは、WindowsコマンドやPowerShellでコマンドの実行結果やエラーをファイルに出力する方法を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit1903

クリップボードにコピーする

コマンドプロンプトや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コマンドレットでは、テキストデータ以外にも画像データや音声データも取り出せます。

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

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

あとがき

コマンドでの処理でクリップボードの内容を扱いたいときに役立つでしょう。