从node.js运行Windows批处理文件

时间:2014-03-27 05:22:47

标签: node.js batch-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 }

4 个答案:

答案 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();