运行 来自 javascript 的 bat 文件

Run a bat file from javascript

我正在尝试 运行 使用 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");

有时它 运行s,有时我得到这些错误 "Expected hexadecimal digit","Access is denied"。 我真的很困惑。我要做的就是从 javascript 文件执行一个 bat 文件。

有人知道怎么做吗?谢谢!

首先,JavaScript没有任何操作系统服务。所以你实际上指的是 Windows Script Host (WSH) 脚本,它恰好是用 JavaScript.

编写的

其次,start 不是可执行文件,而是内置于 cmd.exe 中的命令。

排除混淆,听起来您想从 WSH 脚本执行 shell 脚本(批处理文件)。最简单的方法是这样的(这有点接近您已经尝试过的方法):

var wshShell = new ActiveXObject("WScript.Shell");
wshShell.Run("D:\dir\user.bat");

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

此外,检查以下版本可能会有帮助;

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