cmdline
フロントエンド


このフロントエンドは、Windowsの「ファイル名を指定して実行」ダイアログボックスとよく似ています。「コマンド行」と書かれたエディットボックスにMS-DOS/コマンドプロンプトウィンドウを使うときと同様に、コマンド行を入力し、「実行」ボタンを押せば(あるいは「Enter」キーを押せば)、そのコマンド行が実行されます。また、コマンド行として1個の拡張子付きのファイル名だけを入力すると、拡張子に対応づけられているプログラムを起動し、そのファイルをオープンします。ただし、「ファイル名を指定して実行」ダイアログボックスとは次の点が異なります。

 

コマンド行プログラムを起動したとき、出力がテキストエディタに送られます。「ファイル名を指定して実行」の場合、MS-DOS/コマンドプロンプトウィンドウがオープンし、目にも止まらぬスピードで出力が表示されますので、何が出力されたのかわけがわかりません。

*パイプ、リダイレクト記号(「|>>><」)を使えます。「ファイル名を指定して実行」はこれらを普通の文字として解釈してしまいます。

*1つのコマンド行を実行したからといってウィンドウがクローズされたりしません。「ファイル名を指定して実行」の場合、プログラムを起動するとすぐにダイアログボックスがクローズされてしまいます。

*カレントディレクトリを指定できます。「ファイル名を指定して実行」の場合、カレントディレクトリを指定できませんので、ファイル名をフルパスで入力しなければなりません。

*pipeline)にコマンド行をドラッグドロップできます。

*ウィンドウのサイズを横に延ばすことができます。「ファイル名を指定して実行」はサイズが固定されています。

*存在しないデータファイル名のみを入力してその拡張子に対応付けられているプログラムを起動しようとしたとき、まず指定された名前で空のファイルを作ってから、拡張子に対応するプログラムを起動しようとします。ただし、起動されるアプリケーションによっては、うまくいかない場合があります。

*最近のバージョンの「ファイル名を指定して実行」では、入力内容に従ってコンボボックスのエディットボックス部の下に入力を助ける文字列リストが表示されますが、では表示されません。

 

通常のウィンドウ

のメインウィンドウから起動したときのウィンドウ

 

ディレクトリの移動

カレントディレクトリを変更する方法は5種類あります。

 

*カレントディレクトリ」ラベルのすぐ下のエディットボックスを直接編集し、何らかのコマンドを実行すると、そのコマンドは指定されたディレクトリへの移動後に実行されます。

*ChDir」ボタンを押せば、「フォルダの参照 ダイアログがオープンされます。しかし、このダイアログは、「ファイルを開く」、「名前を付けて保存」ダイアログとは異なり、前にいたディレクトリを覚えておくことができませんので、毎回ルートディレクトリからたどっていかなければなりません。

*エクスプローラからフォルダをドロップすれば、そのフォルダ(ディレクトリ)に移動できます。「設定」ダイアログボックスで「ディレクトリをドロップしたときにただちにディレクトリ移動」をチェックしていなければ、本当に移動してもよいのかどうかを尋ねるメッセージボックスが表示されますが、チェックしてあればただちに移動します。

*コマンド行として、cdchdirコマンドを実行すると、移動先として指定したディレクトリに移動できます。移動先は、%windir%%TMP%などの環境変数で指定することもできます。

*コマンド行」エディットボックスを空にした状態でエクスプローラからファイルをドロップすると、そのファイルが格納されているフォルダに移動します。このとき、「コマンド行」エディットボックスには、ファイルのフルパス(「設定」ダイアログボックスの「「送る」、空欄ドロップでフルパスを使う」をオンにした場合)かパスなしのファイル名(上記設定をオフにした場合)が表示されます。

 

コマンド行をpipeline)にドラッグドロップすると、のカレントディレクトリがのカレントディレクトリになります。ただし、でカレントディレクトリを移動するためのコマンド行を編集し、に渡してものカレントディレクトリは変わりません。他のGUIフロントエンドからにコマンド行をドラッグドロップしたときには、送り側のGUIフロントエンドのカレントディレクトリがのカレントディレクトリになります。

入力ファイル

コマンド行」エディットボックスにコマンドが表示されている状態で、マイコンピュータ、エクスプローラなどのウィンドウからファイルのアイコンをドラッグしてきてこのウィンドウにドロップすれば、コマンド行の末尾にそのファイルの名前が付加されて実行されます。ただし、コマンド行にはファイル名は表示されません。コマンド行右端の矢印をクリックして履歴データをオープンすると、ファイル名を付けた形のものが表示されます。これは、同じコマンド行に異なるファイルをドロップして入力ファイルを次々に変えて実行できるようにするためです。「設定」ダイアログボックスで「ファイルをドロップしたときにコマンドをただちに実行」をチェックしていなければ、本当に実行してもよいのかどうかを尋ねるメッセージボックスが表示されます。

クリップボードの内容を標準入力として使う」をチェックすると、クリップボードの内容がコマンド行にリダイレクトされます。たとえば、コマンド行がcatなら、cat < (クリップボードの内容)が実行されます。

履歴

すぐ上にも書きましたが、コマンド行の右端の右矢印をクリックすると、最近に実行したコマンド行が表示されます。プログラム名とオプション、ファイル名などを区切るスペースの数が違うだけの2つのコマンド行は、同じものとして扱われます。履歴データはレジストリに書き込まれますので(HKEY_CURRENT_USER\Software\Longtail\cmdline\cmdline\historyキー)、を一度終了して再度起動したときにも有効です。履歴データをいくつまで保存するかは、「設定」ダイアログボックスで設定できます(上限は100)。

環境変数

コマンド行でsetコマンドを使って設定した環境変数は、その後も有効に使えます。また、実行したバッチファイルのなかのsetコマンドの実行結果も蓄積されます。コマンド行をpipeline)にドラッグドロップすると、で設定した環境変数がでも設定されます。ただし、setコマンドを使った環境変数設定のためのコマンド行をにドラッグドロップし(あるいはのメインウィンドウから起動したでそのようなコマンド行を編集し)、で実行しても、の環境変数は変わりません。

コマンド行のエキスポート、インポート

コマンド行の左側の四角形をマウスでクリックしてドラッグしていくと、やほかのにドロップできます。また、「コピー」ボタンを押すと、コマンド行の内容を表現するバッチファイルがクリップボードにセットされます。この内容は、テキストエディタを始めとして、にもペースト(貼り付け)できます。さらに、にはほかのGUIフロントエンドからコピーされたデータをペーストしたり、ほかのGUIフロントエンドからドラッグされてきたコマンド行をドロップしたりすることができます。詳しくは、「ドラッグアンドドロップとコピーアンドペースト」を参照してください。

このコマンド行情報は、バッチファイル形式になっており(「コマンド行情報のやり取りの仕組み」)、マウスの右ボタンを押したときに表示されるコンテキストメニューから「.batロード」、「.bat保存」コマンドを選択すれば、.batファイルとして保存、ロードすることができます。詳しくは、「.batファイルのロードと保存」を参照してください。

自身のコマンド行引数

ここで説明しようとしているのは、のダイアログに表示されているコマンド行のことではなく、自身を起動するときのコマンド行引数のことです。最初のコマンド行引数がバッチファイルになっている場合、それがPCKGUIフロントエンドのどれかによって作られたものであれば、ファイルの内容を読み出し、コマンド行をのコマンド行コンボボックスに表示します。PCKが作ったものではないバッチファイルであれば、ファイル名をコマンド行に表示し、「実行」ボタンを押せば、そのバッチファイルをただちに実行できるような状態に自らを初期化します。

最初のコマンド行引数が正しいディレクトリ名になっていれば、まずそのディレクトリに移動してから、残りのコマンド行引数を「コマンド行」コンボボックスに表示します。最初のコマンド行引数の先頭から最後の'\'文字までの間が正しいディレクトリ名になっていれば、そのディレクトリに移動してから、フルパス名かファイル名の残りの部分(どちらが使われるかはの「設定」ダイアログボックスの「「送る」、空欄ドロップでフルパス名を使う」が指定されているかどうかによって決まります)とその他のコマンド行引数を「コマンド行」コンボボックスに表示します。最初のコマンド行引数に正しいディレクトリ名やバッチファイル名が含まれていない場合には、コマンド行引数全体を「コマンド行」コンボボックスに表示します。

設定

設定」ボタンを押すと、「設定」ダイアログボックスが表示されます。このダイアログボックスでは、

 

*出力の表示に使うテキストエディタ

*エクスプローラなどからファイルやフォルダをドロップしたときの確認メッセージの有無

*出力の末尾に実行したコマンド行、実行時間などを付加するかどうか

*コマンド行にドラッグされたファイル名のディレクトリ区切り子を\ではなく/にするかどうか

*コマンド行にドラッグされたファイル名を8.3形式にするかどうか

*本当にテキストエディタを起動するかどうか

*履歴データをいくつ残すか

*自身のコマンド行引数としてデータファイル名が指定されたときや「コマンド行」コンボボックスが空になっている状態でエクスプローラから1個のデータファイルをドラッグアンドドロップしてきたときに、「コマンド行」コンボボックスにデータファイルのフルパスを表示するかどうか。

 

を指定できます。詳しくは、「設定ダイアログボックス」を参照してください。

わかっている問題点

setcdchdirコマンドはのなかで処理していますが、()&|&&||などの特殊記号が使われているコマンド行でこれらのコマンドを使うと、期待通りの動作をしません。たとえば、cd .. & dirのようなコマンド行を実行したとき、dirの出力は正しいものになりますが、カレントディレクトリコンボボックスの内容は変更されません。set test=test & setのようなコマンド行を実行すると、環境変数testの値は、後ろにスペースを含んだ奇妙なものになってしまいます。これらの複数コマンド実行用記号を使うときには、cdsetコマンドを使わないようにしてください。