相当于JScript / Windows Script Host中的UNIX`exec`

时间:2014-06-09 02:58:57

标签: windows command-line cmd jscript wsh

我有一个.js文件,它意味着由命令行上的Node.js执行。我已经使用npm设置了所有内容,并将文件作为“bin”放入用户的路径中。我的问题是,因为文件以.js结尾,所以从命令行运行它会将其发送到基于JScript的Windows脚本宿主而不是节点,如预期的那样。

我正在尝试编写一个JScript包装器,坐在myprogram.js,由Windows脚本宿主执行,然后发送到Node.js.不幸的是,似乎WScript的Exec命令的行为与UNIX exec命令不同:

var shell = new ActiveXObject("WScript.Shell");
var proc = shell.exec("node .\\Library\\executable.js");

while (proc.Status === 0) {
     WScript.Sleep(100);
}

WScript.Echo(proc.Status);

这会缓冲程序的输出,并通过某种JScript WshScriptExec对象公开它。

我需要一个脚本,一个功能或其他方法,将整个终端交给我正在启动的命令行脚本。最有用的是,我想用我正在执行的命令的进程替换正在执行的JScript进程(即UNIX - exec - y行为。)有没有办法做到这一点,或者有些解决我问题的其他方法?

1 个答案:

答案 0 :(得分:0)

完全避免使用.js后缀,因此您将获得相同的未经修饰的命令名称,例如在所有平台上都是可执行文件

通过如下所示在package.json中设置bin来完成,npm将对其进行排序:

{ "bin" : { "executable" : "./executable.js" } }

来源和更多详细信息:https://docs.npmjs.com/files/package.json#bin