run,runsync,runsync2文(Ver8.71対応版)
目次− run,runsync,runsync2文
run文、runsync文、runsync2文は他のプログラムを実行します。
パラメータとしてコマンドの文字列を指定してください。
この3つの他に、runex文というのもあります。参照:runex

run文はプログラムを起動したあと、マクロの次行以降をすぐに続行します。
runsync文はプログラムを起動したあと、コマンドが終了するまで秀丸をアイコン状態にして待ちます。
runsync2文はrunsync文と同様ですが、アイコン状態にしないで待機します。

run "winfile.exe";
run "hidemaru.exe win.ini";
runsync "cl -c -AS -G2scw -W3 " + $filename;

run文は、"<con" や ">con" などを付けることにより標準入出力のリダイレクトが可能です。
詳細は、秀丸エディタヘルプの「プログラム実行の詳細」の項目を参照して下さい。

runsync文とrunsync2文はリダイレクトはできません。

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

run文で「>con」し、秀丸エディタが新しく起動する場合でも、マクロを実行する秀丸は移動しません。
マクロを実行する秀丸エディタを移動して実行結果に対して操作を行う場合は、newfile;して新しい秀丸エディタにマクロの実行を移してからrun文を実行してください。
※V4.14のヘルプまで、run文で標準出力がリダイレクトされている場合、run文はrunsync文同様に、待機するようになります、と書いてありましたが、これは誤りでした。

run文に「%f」「%d」「%b」という文字を書いておくと、この文字は、それぞれ現在のファイル名やフォルダ名に置換されます。
runsync文とrunsync2文は置き換わりません。

%f   フルパスのファイル名

%d   フォルダ名

%b   フォルダを除いたファイル名

%%   % に置き換わります

%を%%に置き換える例
$s = "c:\\folder\\program.exe ! # $ % & ";
#c = strlen( $s );
#i = 0;
while( #i < #c ) {
    if(midstr($s,#i,1)=="%"){
        $s=leftstr($s,#i)+"%"+rightstr($s,#c-#i);
        #i = #i + 1;
        #c = #c + 1;
    }
    #i = #i + 1;
}
run $s;

 プログラムの起動に失敗するとresultがfalseになります。


ちなみに run 文、runsync2 文を拡張した、runex 文というのがあります。
runex 文はパラメータで細かく動作を指定できます。

run "xxx.exe <con >con";
と同じような処理を、
runex "xxx.exe", 0, 1, "", 1, "", 1, "", 1, "", 0, 0, 0;
というような細かいパラメータを指定して行うことができ、run文では指定できない同期/非同期を指定できます。

runsync, runsync2 で標準入出力はできませんが、runex を使うと同期/同期を細かく指定して標準入出力が扱えます。

参照:runex


戻る