我想将 cmd 输出写入文件而不是 stdout
I want to write cmd ouput to file instead of stdout
我可以使用子进程和 spawn 在 node.js 中执行命令,我希望将此命令的输出写入文件而不是 stdout。
test.js
const expect = require('chai').expect;
const { spawn } = require('child_process')
let path = require('path');
let fs = require('fs');
//tried but didn't work
1) const cmd = spawn(ansysfnonetclient, options, {
stdio: [
0, // Use parent's stdin for child.
'pipe', // Pipe child's stdout to parent.
fs.openSync('err.out', 'w') // Direct child's stderr to a file.
]
});
2) const cmd = spawn(ansysfnonetclient, options, {shell: true, stdio: 'inherit'});
it('run the cmd and write o/p to file', function (done) {
this.timeout(30000);
let options = ['-h','-o','temp.log'];
let ansysfnonetclient = path.resolve(__dirname,'../../../../../../../../saoptest/annetclient.exe');
const cmd = spawn(ansysfnonetclient, options, {shell: true, stdio: 'inherit'});
console.log(cmd);
done();
});
const expect = require('chai').expect;
const { spawn } = require('child_process')
let path = require('path');
let fs = require('fs');
```
const cmd = spawn(ansysfnonetclient, options, {shell: true, stdio: 'inherit'});
cmd.stdout.on('data',function(chunk) {
fs.writeFile(path.resolve(__dirname,'../../../../../../../../output.log'), chunk.toString(), function(err) {
if(err)
{
return console.log(err);
}
console.log("The file was saved!");
});
```
受此启发 post Node.js: Capture STDOUT of `child_process.spawn`
stdio
选项通过 3 "files":
- 输入
- 输出
- 错误输出
如果要将常规输出通过管道传输到文件,则必须将文件作为 stdio
中的第二项传递:
const { spawn } = require('child_process');
const fs = require('fs');
const stdio = [
0,
fs.openSync('std.out', 'w'),
fs.openSync('err.out', 'w')
];
const child = spawn('echo', ['hello world!'], {stdio});
在 https://nodejs.org/api/child_process.html#child_process_options_stdio 阅读更多相关信息。
我可以使用子进程和 spawn 在 node.js 中执行命令,我希望将此命令的输出写入文件而不是 stdout。
test.js
const expect = require('chai').expect;
const { spawn } = require('child_process')
let path = require('path');
let fs = require('fs');
//tried but didn't work
1) const cmd = spawn(ansysfnonetclient, options, {
stdio: [
0, // Use parent's stdin for child.
'pipe', // Pipe child's stdout to parent.
fs.openSync('err.out', 'w') // Direct child's stderr to a file.
]
});
2) const cmd = spawn(ansysfnonetclient, options, {shell: true, stdio: 'inherit'});
it('run the cmd and write o/p to file', function (done) {
this.timeout(30000);
let options = ['-h','-o','temp.log'];
let ansysfnonetclient = path.resolve(__dirname,'../../../../../../../../saoptest/annetclient.exe');
const cmd = spawn(ansysfnonetclient, options, {shell: true, stdio: 'inherit'});
console.log(cmd);
done();
});
const expect = require('chai').expect;
const { spawn } = require('child_process')
let path = require('path');
let fs = require('fs');
```
const cmd = spawn(ansysfnonetclient, options, {shell: true, stdio: 'inherit'});
cmd.stdout.on('data',function(chunk) {
fs.writeFile(path.resolve(__dirname,'../../../../../../../../output.log'), chunk.toString(), function(err) {
if(err)
{
return console.log(err);
}
console.log("The file was saved!");
});
```
受此启发 post Node.js: Capture STDOUT of `child_process.spawn`
stdio
选项通过 3 "files":
- 输入
- 输出
- 错误输出
如果要将常规输出通过管道传输到文件,则必须将文件作为 stdio
中的第二项传递:
const { spawn } = require('child_process');
const fs = require('fs');
const stdio = [
0,
fs.openSync('std.out', 'w'),
fs.openSync('err.out', 'w')
];
const child = spawn('echo', ['hello world!'], {stdio});
在 https://nodejs.org/api/child_process.html#child_process_options_stdio 阅读更多相关信息。