WSHで強制的にcscriptで起動させつつエラーは出す

Pocket

JScriptで、ダブルクリックしたときにコマンドプロンプトで強制的に起動するとき
こんな感じで起動してやると、
Echoがたくさんあっても大変なことにならず、
しかもエラーコードもしっかり返すことができる。

function CRun(){
    if (!(/CSCRIPT\.EXE/i).test(WScript.FullName)){
        var WshShell = new ActiveXObject("WScript.Shell");
        var strParam = "";
        for (var i = 0; i < WScript.Arguments.Count(); i++){
            strParam += " \"" + WScript.Arguments(i).replace("\"", "\"\"") + "\"";
        }
        WScript.Quit(WshShell.Run("cmd.exe /v:on /s /c \"cscript.exe //nologo \""
            + WScript.ScriptFullName + "\"" 
            + strParam + " & pause & exit /b !ERRORLEVEL!\"", 8, true));
    }
}
CRun();
WScript.Echo("CScript!");
WScript.Quit(8);

環境変数の遅延展開をつかって、ERRORLEVELを戻しているのがミソ。
これで、エラーが起きたときの処理もできる。
私は業務を軽減するツールとか作るときに割とよく使う。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください