如何让child_process.exec()运行.bat文件?

问题描述 投票:0回答:3

我问了一个奇怪的问题,但我希望这可以帮助其他遇到类似问题的人。

我有常规的commands.bat 文件,我希望节点运行(执行)该文件。所以,我做了类似的事情:

let exec = require ('child_process').exec;
let myFancyProcess = await exec('commands.bat', function(error, stdout, stderr){
    console.log(stdout);
});

但是好像根本不起作用。

Node.js 文档说

.exec()
期望命令或可执行文件作为第一个参数。

可能有更好的方法来运行 .bat 文件,如果您与我分享这些知识,我将不胜感激。 预先感谢!

javascript node.js batch-file
3个回答
0
投票

仅供记录。运行 *.bat 文件的正确方法:

exec('call commands.bat'); 


0
投票
const { exec } = require("child_process");
exec(`<absolute path, eg: C:/users/files>/<filename>.bat`, (error, stdout, stderr) => {
                if (error) {
                    console.error(`exec error: ${error}`);
                    return
                }

                if (stderr) {
                    console.error(`exec stderr: ${stderr}`);
                    return
                }
                console.log(`stdout: ${stdout}`);
            })

0
投票

基于官方文档:https://nodejs.org/docs/v20.13.1/api/child_process.html#child_processexeccommand-options-callback

这对我来说非常有效:

    // On Windows Only...
const { spawn } = require('node:child_process');
const bat = spawn('cmd.exe', ['/c', 'my.bat']);

bat.stdout.on('data', (data) => {
  console.log(data.toString());
});

bat.stderr.on('data', (data) => {
  console.error(data.toString());
});

bat.on('exit', (code) => {
  console.log(`Child exited with code ${code}`);
}); 
© www.soinside.com 2019 - 2024. All rights reserved.