首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行child_process.spawn时保留颜色

执行child_process.spawn时保留颜色
EN

Stack Overflow用户
提问于 2011-10-11 20:08:59
回答 6查看 19.5K关注 0票数 81

我正在尝试使用child_process.spawn在node.js中通过cmd.exe执行windows命令。它可以正确执行,但仅以默认文本颜色显示。我如何保存颜色。有可能吗?

代码语言:javascript
复制
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执行时,颜色是存在的。(这是预期的行为)。如何在通过节点执行时获得此行为。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-12-30 02:45:25

试着这样做:

代码语言:javascript
复制
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上运行。

票数 11
EN

Stack Overflow用户

发布于 2013-01-09 17:03:20

child_process.spawn()有了新的'stdio‘选项。尝试以下操作:

代码语言:javascript
复制
spawn("path to executable", ["params"], {stdio: "inherit"});

Inherit表示0、1、2或process.stdin、process.stdout、process.stderr。

票数 152
EN

Stack Overflow用户

发布于 2016-05-13 23:44:11

对我有效的跨平台解决方案是同时使用shell: truestdio: 'inherit'

代码语言:javascript
复制
const spawn = require('child_process').spawn;

spawn('node', ['./child.js'], { shell: true, stdio: 'inherit' });

感谢@59naga https://github.com/nodejs/node/issues/2333

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7725809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档