#7239

kshi
参加者

どうも WshScriptExec オブジェクトの仕様を勘違いしていたようです。WSHのサンプルコードでCALC.EXE(非同期なプログラム)を起動して、その終了を待つ例があったので真似したのですが、コマンドラインツールの標準出力を得るにはwhileループで待機する必要はなく、StdOutプロパティを1回参照すればよいようです。

WSHにお詳しい方、いかがでしょうか?

#title = “DOSコマンド実行”
#tooltip = “DOSコマンドを実行し、結果をアウトプットバーに出力します。”

var sCmd
if ((sCmd = prompt(“input command:”, “”)) == “”) { Quit(); }
var wsh = new ActiveXObject(“WScript.Shell”);
wExec = wsh.Exec(“%ComSpec% /c ” + sCmd + “n”);

OutputBar.Visible = true;
OutputBar.SetFocus();
OutputBar.writeln(“——–“);
OutputBar.write(wExec.StdOut.ReadAll());
OutputBar.write(wExec.StdErr.ReadAll());