运行 来自 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}`);
}
});
我正在尝试 运行 使用 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}`);
}
});