Programming Field

Clip - DOS/コマンドプロンプト コマンド一覧

[Windows Vista以降] プログラムが入力として受け取ったデータをWindowsのクリップボードにコピーします。

構文

clip[.exe] < <file-name>
<any-command> | clip[.exe]
< <file-name> 入力リダイレクトを利用して <file-name> で指定したファイル内のデータをClipの入力とします。結果、ファイルのデータがクリップボードにコピーされます。
<any-command> | パイプを利用し、<any-command> で指定した任意のコマンドの出力をClipの入力データとします。結果、コマンドの出力内容がクリップボードにコピーされます。

解説

Clip使用例

コマンドプロンプトでは、メニューから範囲選択を選ぶことで画面に出力されている内容をクリップボードにコピーできますが、出力内容をまとめてClipの入力としてリダイレクトすることで、マウス操作なしにクリップボードにコピーをすることができます。ただし、既に何らかのデータがクリップボードに存在する場合はコピー前に破棄されるため、複数回Clipを呼び出しても最後の呼び出しで与えられた入力のみがクリップボードにコピーされます。

※ Clipが受け取る入力(標準入力)は必ずコンソール上のキーボード入力以外になるようにします。パイプや入力リダイレクションがない状態でClipが実行された場合はClipの使用法が出力されます。

サンプル1

type CON | clip

キーボードからの入力をクリップボードにコピーします。入力を終えるには空の行で Ctrl+Z のみを入力する必要があるため、コピーしたテキストは必ず末尾に改行文字が入ります。

なお、Clipをパイプ・リダイレクトを用いずに単体で実行すると、Clipの使用法に関するメッセージが出るため、必ず「type CON」とパイプを使って入力を渡す必要があります。

※ 「clip < CON」とした場合は標準入力がキーボード入力になるため、使用法に関するメッセージが表示されます。

サンプル2

set /P MY_TMP="Hoge" < NUL | clip

改行を含まない「Hoge」という文字列をクリップボードにコピーします。「set /P」による画面出力は改行文字を含まないので、この出力をClipに渡すことで改行文字を含めずにコピーさせることができます。

サンプル3 (バッチファイル)

@echo off
setlocal enableextensions
call :MyProcess C D E > mytemp.dat
clip < mytemp.dat
erase mytemp.dat
exit /b 0

:MyProcess
    if "%1"=="" exit /b 0
    mycheck.exe %1
    shift
    goto MyProcess

[拡張構文] バッチファイル内のラベル「MyProcess」内で実行される一連の出力をクリップボードにコピーします。パイプはバッチファイル内のラベルを呼び出すCallに対して使用することができないため、出力リダイレクト入力リダイレクトを用いて一時ファイル経由でコピーしています。

関連項目