「シェルコマンドを実行」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
ページの作成:「<source lang="javascript"> /** * シェルコマンドを実行する。 * 2013 S.Sasaki * 内容: * マクロを起動するとプロンプトが表示される...」
 
編集の要約なし
1行目: 1行目:
シェルコマンドを実行してその結果をアウトプットバーに出力するマクロです。
エディタの内容を標準入力経由でコマンドに渡して処理することもできます。
未だにテキスト処理にフィルタコマンドを多用する私くらいしか需要はないかなとは思いつつ、誰かに拾っていただければ幸いです。
<source lang="javascript">
<source lang="javascript">
/**
/**

2013年11月29日 (金) 18:07時点における版

シェルコマンドを実行してその結果をアウトプットバーに出力するマクロです。

エディタの内容を標準入力経由でコマンドに渡して処理することもできます。

未だにテキスト処理にフィルタコマンドを多用する私くらいしか需要はないかなとは思いつつ、誰かに拾っていただければ幸いです。

/**
 * シェルコマンドを実行する。
 * 2013 S.Sasaki
 * 内容:
 * マクロを起動するとプロンプトが表示されるので、
 * 実行するシェルコマンドを指定します。
 * 実行結果はアウトプットバーに出力されます。
 * 内部コマンド・外部コマンド・パイプが指定可能です。
 * エディタのテキストが選択されている場合は、
 * 選択されたテキストをシェルコマンドに標準入力で渡します。
 */

// 実行するシェルコマンドの問い合わせ
var commandStr = prompt("command?", "");
if (!commandStr || commandStr.length < 1) {
	// 未入力なら終了
	Quit();
}

// シェルコマンドの実行
var WShell = new ActiveXObject('WScript.Shell');
var exec = WShell.Exec("%comspec% /c=" + commandStr);

// エディタのテキストが選択されていたなら
if (!document.Selection.isEmpty) {
	// 標準入力に選択されたテキストを書きこむ
	exec.StdIn.Write(document.Selection.Text);
	exec.StdIn.Close();
}

// アウトプットバーにシェルコマンド実行結果を出力
outputbar.visible = true;
outputbar.Clear();
while (exec.Status == 0) {
	outputbar.Write(exec.StdOut.ReadAll());
	sleep(100);
}
スポンサーリンク