我正在尝试在node.js
中运行test.bat文件这是代码
var exec = require('child_process').execFile;
case '/start':
req.on('data', function (chunk) {});
req.on('end', function () {
console.log("INSIDE--------------------------------:");
exec('./uli.bat', function (err, data) {
console.log(err);
console.log(data);
res.end(data);
});
});
break;
运行此node.js文件时正在
INSIDE--------------------------------:
{ [Error: Command failed: '.' is not recognized as an internal or ext
nd,
operable program or batch file.
] killed: false, code: 1, signal: null }
答案 0 :(得分:13)
我找到了它的解决方案..它对我来说很好。这将打开一个新的命令窗口,并在子进程中运行我的主节点JS。您无需提供cmd.exe的完整路径。 我犯了那个错误。
var spawn = require('child_process').spawn,
ls = spawn('cmd.exe', ['/c', 'my.bat']);
ls.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ls.on('exit', function (code) {
console.log('child process exited with code ' + code);
});
答案 1 :(得分:2)
我知道执行的最简单的方法是遵循代码:
require('child_process').exec("path/to/your/file.bat", function (err, stdout, stderr) {
if (err) {
// Ooops.
// console.log(stderr);
return console.log(err);
}
// Done.
console.log(stdout);
});
如果您的文件位于当前脚本的目录中,则可以将"path/to/your/file.bat"
替换为__dirname + "/file.bat"
。
答案 2 :(得分:0)
在Windows中,我不喜欢spawn,因为它创建了一个新的cmd.exe,我们必须将.bat或.cmd文件作为参数传递.'exec'是更好的选择。示例如下:
请注意,在Windows中,您需要使用双\来传递路径,例如C:\路径\ batfilename.bat
const { exec } = require('child_process');
exec("path", (err, stdout, stderr) => {
if (err) {
console.error(err);
return;
}
console.log(stdout);
});
答案 3 :(得分:0)
我知道执行的更简单的方法是以下代码:
function Process() {
const process = require('child_process');
var ls = process.spawn('script.bat');
ls.stdout.on('data', function (data) {
console.log(data);
});
ls.stderr.on('data', function (data) {
console.log(data);
});
ls.on('close', function (code) {
if (code == 0)
console.log('Stop');
else
console.log('Start');
});
};
Process();