我希望你能够
C:\>ACommandThatGetsData > save.txt
不过,我希望能用Node.JS执行上述命令,而非在控制台解析并保存数据。
如何使用Node.JS执行shell命令?
我希望你能够
C:\>ACommandThatGetsData > save.txt
不过,我希望能用Node.JS执行上述命令,而非在控制台解析并保存数据。
如何使用Node.JS执行shell命令?
process.execPath()
:process.execPath('/path/to/executable');
我应该更好地阅读文档。
有一个子进程模块(Child Process Module)可允许执行子进程。你将需要使用child_process.exec
、child_process.execFile
或 child_process.spawn
中的一个。它们的使用方法都类似,但每个模块各有优点。哪个模块要使用取决于您的需求。
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);
}
});
});
await
和promises时使用这个吗?谢谢。 - Ahmed Can Unbayerr
是非假值,您将调用 reject(err)
;否则,您将调用 resolve(data)
。请参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise 以了解如何使用 resolve
和 reject
实现 Promise。 - Haroldo_OK我知道这个问题已经很久了,但是它帮助我使用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();