我正在尝试使用child_process.spawn在node.js中通过cmd.exe执行windows命令。它可以正确执行,但仅以默认文本颜色显示。我如何保存颜色。有可能吗?
var spawn = require('child_process').spawn,
cmd = spawn('cmd', ['/s', '/c', 'C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild c:\\test.sln']);
cmd.stdout.on('data', function(data){
process.stdout.write(data);
});
cmd.stderr.on('data', function(data){
process.stderr.write(data);
});
cmd.on('exit', function(code){
console.log(code);
});执行via节点时,不会保留颜色。

当直接通过cmd.exe执行时,颜色是存在的。(这是预期的行为)。如何在通过节点执行时获得此行为。

发布于 2011-12-30 02:45:25
试着这样做:
var spawn = require('child_process').spawn
, command = 'C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild c:\\test.sln'
, cmd = spawn('cmd', ['/s', '/c', command], { customFds: [0,1,2] });
cmd.on('exit', function(code){
console.log(code);
});请注意,我不确定customFds是否可以在Windows上运行。我知道它过时的功能不起作用,但当只将[0,1,2]作为fd传递时,我认为这是一个特例。
我一直在做something similar here,但我只在Unix机器上运行过这个命令。所以让我知道这是否能在Windows上运行。
发布于 2013-01-09 17:03:20
child_process.spawn()有了新的'stdio‘选项。尝试以下操作:
spawn("path to executable", ["params"], {stdio: "inherit"});Inherit表示0、1、2或process.stdin、process.stdout、process.stderr。
发布于 2016-05-13 23:44:11
对我有效的跨平台解决方案是同时使用shell: true和stdio: 'inherit'
const spawn = require('child_process').spawn;
spawn('node', ['./child.js'], { shell: true, stdio: 'inherit' });https://stackoverflow.com/questions/7725809
复制相似问题