コマンドラインオプションは、スラッシュ(/)とアルファベットの組み合わせで指定します。
(スラッシュの代わりに、ハイフン(-)も使えます)
(アルファベットは、大文字小文字を区別しません)
複数のオプションを指定する場合は、それぞれのオプションをスペース文字で区切るか、スラッシュの後ろに、アルファベットを連ねて指定します。
(例えば、「/W /E」と「/WE」は、同じ意味になります)
オプションによっては、その後ろに更に、設定の詳細を定義するための数値や文字列を追記する必要がある場合があります。
その場合は、スペース文字などで区切らず、前記のアルファベットの後に直接追記して下さい。
同類のオプションが複数指定されている場合は、後のオプションを優先します。
以下に、基本動作を選択するための9種類のオプションの解説を列挙します。
/C
クリップボードをクリアします。
/R
クリップボード内のテキスト(またはビットマップ)を、ファイルへ出力します。
デフォルトでは、標準出力(stdout)へ出力します。通常はそのデータを、リダイレクトしてファイルに保存するか、
パイプを介して他のプロセスに送信する、という使い方になるでしょう。
あるいは、後述の「/O」オプションで、出力先ファイルを指定できます。
/W , /A , /P
ファイルから入力したテキスト(またはビットマップ)を、クリップボードへ書き込みます。
デフォルトでは、標準入力(stdin)から入力します。通常は、リダイレクトを用いてファイルを読み込ませる。
または、パイプを介して他のプロセスの出力を受信する、という使い方になるでしょう。
あるいは、後述の「/I」オプションで、入力元ファイルを指定できます。
「/W」は、クリップボードをクリアし、新しいデータに置き換えます。
「/A」は、クリップボード内のテキストの末尾に、新しいテキストを追記します。
「/P」は、クリップボード内のテキストの先頭に、新しいテキストを挿入します。
(「/A」「/P」オプションは、テキストに対してのみ使用可能です)
/X , /Y , /Z , /B
クリップボード内のテキストを、コマンドとして実行します。
(厳密には、環境変数「COMSPEC」で指定されたコマンド・プロセッサの子プロセスとして実行する)
(行頭および行末の、空白文字およびタブ文字は除外して実行する)
「/X」は、1行目のみを実行します。
「/Y」は、コマンドからエラーが返されるまで、全ての行を実行します。
「/Z」は、常に全ての行を実行します。
「/B」は、テキストそのものをバッチファイルとして実行します。
(これらのオプションは、テキストに対してのみ使用可能です)
「/Y」「/Z」オプションの使用時に注意を要するのは、各行のコマンド毎に、
コマンド・プロセッサを個別に実行し直す仕様である事です。
つまり、ある行のコマンドで行った環境の変更(環境変数やカレントディレクトリの変更)は、
次の行のコマンドには引き継がれない、という事です。例えば、
例: | |
CD "My Document" | |
DIR |
「/B」オプションは、環境変数
TMP , TEMP , TMPDIR の
何れかにて指定されたディレクトリ(環境変数が無い場合は、現行のディレクトリ)に、クリップボード内のテキストを複写した
$CLPB???.CMD(???=000-999)という名のバッチファイルを作成し、それを実行します。
(そのバッチファイルは、実行後に自動で削除されます)
「/Y」「/Z」オプションと違い、環境の変化は次のコマンドにも引き継がれる事と、
IF や GOTO 等のバッチファイル特有のコマンドが使える事がメリットです。
その反面、バッチファイル内部からのバッチファイル実行時に、そこで処理が途切れてしまう仕様など、バッチファイルそのものの制限も付随してきます。
例: | ||
[C:\]CLIPB | SORT | CLIPB | ||
↑ | ||
最初の呼び出し(左側)は、クリップボード内のテキストを標準出力(stdout)へ書き出し、SORT へ渡す。 | ||
最後の呼び出し(右側)は、SORT からの結果を標準入力(stdin)から受け取り、クリップボードに書き込む。 |
上記の基本動作と組み合わせて使うコマンドラインオプションに、以下のような物があります。
/E , /E2
処理対象データを、標準出力(stdout)に出力します。
このオプションは、クリップボード書き込み用のオプション(「/W」、「/A」または「/P」)、
またはコマンド実行用のオプション(「/X」、「/Y」、「/Z」または「/B」)の、
何れかのオプションと併用した場合のみ効果があります。
「/E」オプションと、「/W」、「/A」または「/P」を併用した場合は、クリップボードに書き込むデータを、
標準出力(stdout)に出力します。
同じく、「/X」「/Y」「/Z」「/B」と併用した場合は、クリップボードから読み出したテキストの全てを、
プログラム実行前に標準出力(stdout)に出力します。
「/E2」オプションと、「/X」「/Y」「/Z」を併用した場合は、
クリップボードから読み出したテキストのうち、実行するプログラムの行だけを1行ずつ、
そのプログラムの実行前に標準出力(stdout)に出力します。
(「/E」と違い、実行しない行は出力しない(例えば空行))
「/E2」オプションは、コマンド実行用オプション「/X」「/Y」「/Z」と併用しないと、エラーになります。
(「/B」オプションとは併用してもエラーにはならない。ただし、「/E」と「/E2」の出力は同一になる)
例: | ||
[C:\]DIR | CLIPB /E | ||
↑ | ||
「DIR」コマンドの出力を、画面とクリップボードの両方に反映する。 |
/Fn
読み書きするデータの種類を指定します。
n に、1 または 2 を指定します。
(1=テキスト(デフォルト)。2=ビットマップ)
クリップボードからテキストを読み出す場合は、特に「/F1」オプションを指定する必要はありません(デフォルトなので)。
ビットマップを読み出す場合は、明示的に「/F2」オプションを指定する必要があります。
(たとえクリップボード内に、ビットマップしかデータが存在していなくても)
クリップボードへデータを書き込む場合は、CLIPB がそのデータの種類を自動判別するので、「/F」オプションの指定は不要です。
データの種類にビットマップを選択した場合、基本動作は、読み出し(/R)または書き込み(/W)のみが指定可能です。
(それら以外の基本動作を指定すると、エラーになります)
ビットマップの読み書きは、Windows(または OS/2)標準のビットマップ形式のみサポートしています(いわゆる BMP ファイル)。
(他のフォーマットの画像データは非サポート。JPEG,PNG,etc...)
なお、クリップボードからビットマップを読み出す場合も、テキストの場合と同様に、デフォルトでは標準出力(stdout)にデータを出力します。
ビットマップのバイナリデータをコンソールにそのまま垂れ流されると、大抵の場合は悲惨な事態になります。
必ず何らかのファイルにリダイレクトするか、後述の「/O」オプションを用いて出力ファイル名を指定して下さい。
/Ifilename
入力対象のファイルを指定します。
(デフォルトは標準入力(stdin))
「/I」の直後に、入力対象にしたいファイル名を追記して下さい(スペース文字を挟まずに)。
「/I」の直後から、コマンドラインの区切り(スペース文字)までが、ファイル名であると認識されます。
スペース文字を含むファイル名を指定したい場合は、ダブルクォーテーション文字(")で囲って下さい。
(ファイル名に「*」を指定すると、標準入力(stdin)を指定した物と見なします)
このオプションは、クリップボードへデータを書き込むための基本動作を選択する、「/W」「/A」「/P」の、
何れかのオプションとの併用時のみ使用可能です。
(それらの何れとも併用しなかった場合は、エラーになります)
/Ln
クリップボードに対して読み書きするテキストのサイズを、n キロバイトに制限します。n の値は、1 以上の整数で指定します。
(「/L」と数値の間には、空白を空けないでください)
n キロバイト以上のテキストが入っているクリップボードを読み出そうとした場合、
または、n キロバイト以上のテキストをクリップボードへ書き込もうとした場合、
「Size of a text exceeds a limit.」のエラーになります(戻り値2)。
多くのアプリケーション(例えばテキストエディタ)は、クリップボードを介して取り扱えるテキストデータのサイズを制限しています。
(64 キロバイト未満に制限されている事が多い)
制限を越えるサイズのテキストデータをクリップボードに書き込むと、そのアプリケーションはクラッシュするかも知れません。
あらかじめ「/L」のオプションで、制限を越えるテキストデータがクリップボードに書き込まれるのを防いでおけば、
クラッシュの危険を回避できます。
なお、CLIPB で扱えるテキストのサイズには、特に制限はありません。
このオプションは、対象データがテキストの場合のみ効果があります。
(対象データがビットマップの場合は、無視します)
/M , /N
クリップボードに書き込むテキストの改行コードを統一します。
(「/M」は「CR+LF(\r\n)」に。「/N」は「LF(\n)」に)
このオプションは、クリップボードへデータを書き込むための基本動作を選択する、「/W」「/A」「/P」の、何れかのオプションと併用した場合のみ効果があります。
なお、「/E」オプションと併用した場合の標準出力(stdout)への出力は、改行コード変換処理の対象外です。
このオプションは、対象データがテキストの場合のみ効果があります。
(対象データがビットマップの場合は、無視します)
/Ofilename
出力対象のファイルを指定します。
(デフォルトは標準出力(stdout))
「/O」の直後に、出力対象にしたいファイル名を追記して下さい(スペース文字を挟まずに)。
「/O」の直後から、コマンドラインの区切り(スペース文字)までが、ファイル名であると認識されます。
スペース文字を含むファイル名を指定したい場合は、ダブルクォーテーション文字(")で囲って下さい。
(ファイル名に「*」を指定すると、標準出力(stdout)を指定した物と見なします)
標準出力(stdout)からファイルへリダイレクトする事と、「/O」オプションで明示的に出力ファイルを指定する事の違いは、
クリップボードに取得対象データが無い場合に生じます。
(リダイレクトを行うと、サイズが 0 バイトのファイルが必ず作成される。
「/O」オプションを用いると、データが無い場合はファイルは作成されない)
「/O」オプションで指定されたファイルが既に存在している場合、既存のファイルは問答無用で削除されてしまうので、注意して下さい。
(クリップボードに取得対象データが無い場合でも、削除されます)
このオプションは、クリップボードからデータを読み出すための、「/R」オプションとの併用時のみ使用可能です。
(「/R」オプションと併用しなかった場合は、エラーになります)
/?
簡単なヘルプを表示します。
例: | ||
[C:\]SET CLIPBCMD=/M | ||
↑ | ||
常に改行コードを「CR+LF」に変換する |
余談ですが、正確には、実行ファイル名+「CMD」が、環境変数名になります。
例えば、CLIPB.EXE を CLIPBRD.EXE にリネームすると、実行時に参照する環境変数は CLIPBRDCMD になります。