English help on website



プログラム実行の詳細(Ver9.34対応版)
目次コマンドそのほかのコマンド− プログラム実行の詳細
 プログラム実行は、他のプログラムを実行するための機能です。
 例えば、エクスプローラを実行したい場合、「コマンドライン」に「explorer」と入力して実行すると、エクスプローラを起動することができます。

 標準入出力をリダイレクトすることもできます。
 マクロのrun文でも同様のことができます。
 「オプション>>」を出してより詳細なリダイレクトの指定をすることもできます。
 標準出力をリダイレクトするとき、もしNULL文字が含まれる場合[動作環境]→[エンコード2]のNULL文字の警告と変換の設定が適用されます。(アウトプット枠除く)


以下は、オプションの「詳細指定」を使わないときを説明します。
 リダイレクトは、通常コマンドプロンプト上で実行するプログラムを、秀丸エディタ上で起動し、その結果を秀丸エディタ上に出力するために使います。結果を秀丸エディタ上に出力するかどうかは自動で判断されます。

 コマンドライン上に「<filename 」という文字列を付けると、標準入力をリダイレクトして、filename の 内容を標準入力に渡すことができます。
 filename を「con」にすると、現在編集中の内容を渡すようになります。「con」を指定していて、かつ範囲選択されている場合は、範囲選択の内容を渡します。

 逆に「>filename 」という文字列を付けると、標準出力をリダイレクトして、ファイルに出力します。
 filename を「con」にすると、範囲選択されている場合は、範囲選択の内容と出力結果を置換するようになります。
 「>filename 」や「>con」を指定しないでおくと新規の秀丸エディタに出力されます。

 「<con」や「>con」は、現在の内容をShift-JISに変換してプログラムに渡し、プログラムからの出力はShift-JISであると解釈して秀丸エディタ上に出力されます。
 開いているファイルのエンコードのまま扱いたい場合は、「<filename 」や「>filename 」で直接ファイルへ入出力してください。
 参照:ファイルのエンコードのまま実行するマクロ

 標準出力と一緒に標準エラー出力もリダイレクトできます。[動作環境]→[その他のコマンド]→[プログラム実行]で標準エラー出力の扱いを指定できます。
 コンソールアプリケーションで、ウィンドウを出したくない場合は、「>nul」と指定してください。
 コマンドライン中に「%f」「%d」「%b」「%n」という文字を書いておくと、この文字は、それぞれ現在のファイル名やフォルダ名に置換されます。(パラメータ部分のみ)
%f は フルパスのファイル名
%d は フォルダ名
%b は フォルダを除いたファイル名
%n は 拡張子を除いたファイル名部分のみ(V8.00以降)
%l は カーソル位置の行番号(先頭が1)(V8.40以降)
%c は カーソル位置の桁位置(行頭が1)(V8.40以降)
%% と書くと % に置き換わります
 次に例をいろいろあげますので、いろいろ応用してみましょう。
結果を秀丸エディタに出力する
 例えば、fc.exeの結果を秀丸エディタ上に出力する場合、「>con」を付けます。て新規の秀丸エディタ上に結果が出力されます。
 (fc.exeのようにコンソールアプリと思わしき場合は、「>con」を付けずにコマンドラインにそのまま書くだけで自動で判断する場合がありますが、基本的には「>con」を付けます。)
例:
fc aaa.txt bbb.txt >con

フィルタを使用する
 例えば、範囲選択の内容をsort.exeに渡して、結果を置換する場合、「<con」と「>con」を付けます。「<con」は範囲選択の内容をsort.exeに渡すという意味で、「>con」は範囲選択の内容とsort.exeの出力結果を置換するという意味になります。
例:
sort <con >con
 こういう機能をマクロに登録しておくと、フィルタを新しい機能として使うことができるので便利です。
例:
if( selecting == 1 ) {
    run "sort <con >con";
}

現在編集中のファイル名をパラメータに渡す
 例えば、コンパイラcl.exeを起動したいという場合、第一パラメータに「%f」と書いておくと、%fの部分がファイル名に置換されるので、他のファイルにも共通して同じコマンドラインを使うことができます。
例:
cl %f >con
例:
tsc.cmd %f >nul

コマンドプロンプトの内部コマンドの結果を出力する
 dirやtypeなどは、exeファイルではないのでそのままでは使うことができませんが、cmd.exeを経由することで使用することができます。
例:
cmd /c dir >con