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