以下emacs.cmdの内容
@if(0)==(0) echo off
CScript.exe //NoLogo //E:JScript "%~f0" %*
goto :EOF
@end
var WshShell = WScript.CreateObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
// パスの追加
var procEnv = WshShell.Environment("Process");
procEnv.Item("PATH") = "Emacsをインストールしたディレクトリ\\bin;" + WshShell.ExpandEnvironmentStrings("%PATH%");
// Emacsが走っているか確認
var strComputer = ".";
var objWMIService = GetObject("winmgmts:\\\\" + strComputer + "\\root\\cimv2");
var colItems = objWMIService.ExecQuery("Select * From Win32_Process");
var objItem;
var pID = null;
var e = new Enumerator(colItems);
for(;!e.atEnd();e.moveNext()) {
objItem = e.item();
if((objItem.CommandLine != null)&&
(objItem.CommandLine.match("emacs\.exe"))) {
pID = objItem.ProcessId;
break;
}
}
if(pID == null) {
// Emacsが走ってない
var cmdLine = "runemacs.exe";
var i;
for(i=0; i<WScript.Arguments.length; i++) {
cmdLine += " \"" + WScript.Arguments(i) + "\"";
}
WshShell.Run(cmdLine);
} else {
// Emacsが走ってる
if(WScript.Arguments.length == 0) {
// 引数なしはアクティブにするだけ
WshShell.AppActivate(pID);
} else {
var cmdLine = "emacsclientw.exe -n";
var i;
for(i=0; i<WScript.Arguments.length; i++) {
cmdLine += " \"" + WScript.Arguments(i) + "\"";
}
WshShell.Run(cmdLine);
}
}