从javascript

时间:2017-03-23 20:04:55

标签: javascript batch-file jscript wsh

我尝试使用javascript运行bat文件。我尝试过使用PowerShell但它似乎没有正常工作。这是我试过的代码:

var oShell = WScript.CreateObject("WScript.Shell");
oShell.Exec("D:");
oShell.Exec("cd dir");
oShell.Exec("start user.bat");

我也试过了:

var oShell = WScript.CreateObject("WScript.Shell");
oShell.Exec("start D:\dir\user.bat");

有时会运行,有时我会收到这些错误"预期的十六进制数字","访问被拒绝"。 我真的很困惑。我尝试做的就是从javascript文件中执行bat文件。

任何人都知道如何做到这一点?谢谢!

2 个答案:

答案 0 :(得分:3)

首先,JavaScript没有任何操作系统服务。所以你真的指的是恰好用JavaScript编写的Windows脚本宿主(WSH)脚本。

其次,let foo = bar不是可执行文件,而是内置于start的命令。

由于混乱不堪,听起来您想要从WSH脚本执行shell脚本(批处理文件)。最简单的方法是这样的(这与你已经尝试过的有点接近):

cmd.exe

要创建var wshShell = new ActiveXObject("WScript.Shell"); wshShell.Run("D:\\dir\\user.bat"); COM对象引用(progid WshShell),请使用WScript.Shell关键字和new构造函数。此外,您需要在JavaScript字符串中加倍反斜杠(ActiveXObject),因为\会转义JavaScript字符串中的字符。

答案 1 :(得分:0)

另外,请检查以下版本可能有帮助;

var runnableScript = exec('path_to.bat',
(error, stdout, stderr) => {
    console.log(stdout);
    console.log(stderr);
    if (error !== null) {
        console.log(`exec error: ${error}`);
    }

});