Windowsのコマンドラインでクリップボードを扱う方法

WindowsなどのOSでコピーやペーストを行なう時の一時領域として意識していなくても常に利用されているのがクリップボードです。

コピーしたファイル、画像、テキストなどは一度この領域に格納された後、ペーストなどの操作でクリップボードから貼り付けたりする処理が行なわれます。

実はこのクリップボード、GUI操作だけではなく、コマンドプロンプトやPowerShellのようなコマンドラインで処理を行なうプログラムからも使える仕組みが準備されています。

今回はちょっとしたTIPS感があるこの仕組みの使い方を説明します。

クリップボードに出力

まずコマンドプロンプトなどで実行したコマンドの結果をクリップボードに吐き出す仕組みからです。

こちらの使い方はとても簡単で、コマンドプロンプトなどで共通して使われる技術の一つ「パイプ」の仕組みを利用します。

パイプは元々はUNIX系のOSに備わる基本機能で、複数のコマンドを繋いで連続して多様な操作をいっぺんに行えるようにする仕組みです。

テキストファイルの中身を表示させてそれをソートコマンドで並び替えて出力、とか、あるコマンドの実行結果の中から特定の文字列を含む行だけを表示とか、ちょっと気の利いた処理を簡単に行える機能です。

元々、コマンドラインで使える1つ1つのコマンドは単機能に絞り込んでシンプルに作られています。それらの機能を組み合わせて目的の処理を行なうための工夫ですね。

「|」や「>」「<」などの特定の文字を使って複数のコマンドを繋ぎます。

では実際にコマンドの実行結果をクリップボードに出力する例を見てみましょう。このときには「|」のパイプを使います。

dir | clip

のようなカタチでコマンドを実行します。「clip」がクリップボードで、dirコマンドで出力したファイルやフォルダのリストがクリップボードにコピーされます。

クリップボードから結果をペーストするとこんな感じです。

こちらはコマンドプロンプトでの実行結果ですが、同じことがPowerShellでも実行できます。

とても簡単です。

クリップボードから入力

次はクリップボードの中にあるデータを読み込んでコマンドを実行してみます。こちらで使うのは「get-clipboard」というPowerShellの機能です。

エディタでまずは適当なデータを準備します。

これを選択してコピー。クリップボードにデータを入れます。

次にこれをソートして出力するためにPowerShellの画面で次のように入力します。

get-clipboard | sort

すると上で作ったようなデータがソートされたカタチで表示されます。

get-clipboardはPowerShellの機能ですがコマンドプロンプトでも利用できます。このときには前に「powershell」のコマンドを追加して次のように入力します。

powershell get-clipboard | sort

同じ結果が得られるのが分ったと思います。

大量データの機械的処理はコマンドラインで

上の例で使ったようなソート、並べ替えや、決まったパターンでの文字列の置き換え処理など、機械的に行える処理を大量に実行するときには、コマンドプロンプトやPowerShellのようなコマンドラインの機能を使うと大幅に効率を上げられるときがあります。

文字列処理などの目的ならばはるかに強力で複雑な処理を一気に行えるコマンドを導入することも出来ます。

なんだか面倒くさそう、で敬遠しているのはちょっともったいないところもありますから、こういった機能もちょっと覚えておくと何かの際には役立つこともあるでしょう。