« コンソールアプリやバッチファイルをウィンドウアプリっぽく実行する。 | トップページ | MHTMLファイルの中のファイルのURL »

2007年9月19日 (水)

バッチファイルをウィンドウアプリっぽくする。その2

バッチファイルの先頭に1行、末尾に@goto :eof以降の8行を追加します。

サンプルは、JScript.NETのソースをコンパイルするバッチファイルです。
ソースファイルをバッチファイルにドロップして起動します。

JSCW.CMD ソースファイル

@if(0)==(0) if not "%~d0"=="\\" start /min CScript.exe //e:jscript %0 %* & goto :eof
@ECHO OFF
SETLOCAL
(SET DOTNET=%SystemRoot%\Microsoft.NET\Framework)
FOR /F "delims=" %%1 IN ('DIR /AD /B /ON "%DOTNET%\v*"') DO IF EXIST "%DOTNET%\%%~1\jsc.exe" (SET DOTNET=%DOTNET%\%%~1\jsc.exe)
ECHO ON
"%DOTNET%" /nologo /t:winexe /out:"%~dpn1.exe" "%~f1"
@goto :eof
@end
var args=new Array('"\\\\.\\'+WScript.ScriptFullName+'"','2>&1');
for(var e=new Enumerator(WScript.Arguments);!e.atEnd();e.moveNext()){
  var arg=e.item();args.push(arg.indexOf(' ')+1?'"'+arg+'"':arg);}
var wShell=new ActiveXObject('WScript.Shell');
var oExec=wShell.Exec(args.join(' '));oExec.StdIn.Close();
wShell.Popup(oExec.StdOut.ReadAll());WScript.Quit(oExec.ExitCode);

起動されと、すぐにコンソールウィンドウを最小化して、結果をメッセージボックスに出します。

起動時に瞬間、コンソールウィンドウが現れますが、これは避けられないので、我慢します。

« コンソールアプリやバッチファイルをウィンドウアプリっぽく実行する。 | トップページ | MHTMLファイルの中のファイルのURL »