从node.js运行一个windowsbatch file

我试图在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 } 

我已经find了解决scheme..它的作品罚款给我。 这将打开一个新的命令窗口,并在subprocess中运行我的主节点JS。 您不需要提供cmd.exe的完整path。 我犯了这个错误。

 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); }); 

我知道的最简单的方法是执行下面的代码:

 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); }); 

__dirname + "/file.bat"如果您的文件位于当前脚本的目录中,则可以用__dirname + "/file.bat" "path/to/your/file.bat"replace"path/to/your/file.bat"

在Windows中,我不喜欢产卵,因为它创build一个新的cmd.exe,我们必须通过.bat或.cmd文件作为参数。'exec'是更好的select。 示例如下:

请注意,在窗口中,你需要传递path与双\ \例如C:\path\ batfilename.bat

 const { exec } = require('child_process'); exec("path", (err, stdout, stderr) => { if (err) { console.error(err); return; } console.log(stdout); });