バッチファイルにJavaScriptを埋め込む (その2)

だいぶまえに、バッチファイルにJavaScriptを埋め込む方法とその例を書きました。

その後よくよく検証してみると、これではいくつか問題がある気がしてきました。

  1. //bのように、//で始まる引数をバッチファイルに指定できない (cscriptのオプションと解釈されてしまう)。
  2. WScript.quit(…)で指定した終了コードがバッチファイルの終了コードとならない。

なので書き直してみました。

@if (0==1) /*
@echo off
setlocal enableextensions disabledelayedexpansion
goto CSCRIPT
*/ @end

WScript.quit(1);

/*
:CSCRIPT
echo */// > nul & "%SystemRoot%\system32\cscript.exe" "%~f0" //E:JScript //Nologo // %*

この例ではWScript.quit(1)としているので、バッチファイルの終了コードも1となるはずです。