如何使用Node JS执行Windows Shell命令(Cmd.exe)

b0zn9rqh  于 12个月前  发布在  Node.js
关注(0)|答案(3)|浏览(139)

我想

C:\>ACommandThatGetsData > save.txt

但是我不想在控制台中解析和保存数据,我想使用Node.JS执行上述命令
如何使用Node.JS执行shell命令?

yfwxisqw

yfwxisqw1#

使用process.execPath()

process.execPath('/path/to/executable');

更新

我应该更好地阅读文件。
有一个Child Process Module允许执行子进程。您将需要child_process.execchild_process.execFilechild_process.spawn。所有这些在使用上都是相似的,但每个人都有自己的优势。使用哪一个取决于你的需要。

qyzbxkaa

qyzbxkaa2#

您也可以尝试node-cmd包:

const nodeCmd = require('node-cmd');
nodeCmd.get('dir', (err, data, stderr) => console.log(data));

在新版本的软件包中,语法略有变化:

const nodeCmd = require('node-cmd');
nodeCmd.run('dir', (err, data, stderr) => console.log(data));

它不直接支持Promises,但你可以很容易地将它们打包在一个里面:

const nodeCmd = require('node-cmd');
const promise = new Promise((resolve, reject) => {
    nodeCmd.run('dir', (err, data, stderr) => {
        if (err) {
            reject(err);
        } else {
            resolve(data, stderr);
        }
    });
});
oxalkeyp

oxalkeyp3#

我知道这个问题很老了,但它帮助我使用promise得到了解决方案。另请参阅:此问题和答案

const util = require('util');
const exec = util.promisify(require('child_process').exec);

async function runCommand(command) {
  const { stdout, stderr, error } = await exec(command);
  if(stderr){console.error('stderr:', stderr);}
  if(error){console.error('error:', error);}
  return stdout;
}

async function myFunction () {
    // your code here building the command you wish to execute ...
    const command = 'dir';
    const result = await runCommand(command);
    console.log("_result", result);
    // your code here processing the result ...
}

// just calling myFunction() here so it runs when the file is loaded
myFunction();

相关问题