Run a bat file from node.js | Execute child process from node.js

We can execute external command or any process from the node js. With the help of child_process module we can achieve it.

1.

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

2.

let exec = require('child_process').exec
exec("my.bat", function (err, stdout, stderr) {
    if (err) {
         console.log(stderr);
         return;
    }
    // Done.
    console.log(stdout);
});

There are other method of child_process like.

  1. child_process.exec()
  2. child_process.execFile()
  3. child_process.spawn()

The importance of the distinction between child_process.exec() and child_process.execFile() can vary based on platform. On Unix-type operating systems (Unix, Linux, macOS) child_process.execFile() can be more efficient because it does not spawn a shell by default.

On Windows, however, .bat and .cmd files are not executable on their own without a terminal, and therefore cannot be launched using child_process.execFile().

When running on Windows, .bat and .cmd files can be invoked using child_process.spawn() with the shell option set, with child_process.exec(), or by spawning cmd.exe and passing the .bat or .cmd file as an argument (which is what the shell option and child_process.exec() do). In any case, if the script filename contains spaces it needs to be quoted.

Source : Child_Process

Leave a Reply