【问题标题】:How to preserve colored output (stdout and stderr) for cmd scripts from powershell?如何为powershell的cmd脚本保留彩色输出(stdout和stderr)?
【发布时间】:2013-09-22 14:12:04
【问题描述】:

我们有 cmd 的构建脚本。例如这里是其中之一的输出。

当我在 PS 中运行相同的命令时,它会以红色输出所有内容(可能是因为它用于错误输出)。

我能以某种方式保持颜色吗?

【问题讨论】:

    标签: powershell cmd


    【解决方案1】:

    起初,我认为这是不可能的。

    但是,经过一番搜索,我找到了这篇博文,Colorized capture of console screen in HTML and RTF

    您应该能够从那里使用 PowerShell 脚本来创建您需要的内容。

    【讨论】:

    • 不错!仍然需要做一些工作,但看起来我可以创建一个保留颜色的包装器。
    • 使用一个简单的 C# 控制台应用程序,将彩色输出写入标准输出和标准错误。直接从 PowerShell 和从 PowerShell 调用的 bat 文件调用此 exe。两种方式的颜色看起来就像从 cmd 调用一样。
    • @JasonShirk 我没有听懂你在说什么。 xvorsk 想要捕获输出的颜色,而不仅仅是输出的文本。
    • @aphoria 从 PowerShell 运行时输出变为红色。我无法重现。
    • 实际上,我认为误解了这个问题。我以为他想捕捉输出文本的颜色。真的,他在问为什么从 PowerShell 调用时颜色不显示。
    【解决方案2】:

    我不肯定这会起作用,但如果您不介意将 stderr 重定向到 stdout,PowerShell 不会尝试将所有内容都涂成红色。为此,只需在运行 cmd 脚本时添加 2>&1,例如

    build.cmd 2>&1
    

    【讨论】:

    • 谢谢,我已经试过了——对我不起作用。看起来我们有很多下标/exe/powershell 子调用,而 2>&1 不适用于嵌套调用。
    • 只需用引号将其括起来即可将重定向传递给 cmd.exe:"2>&1"
    猜你喜欢
    • 2010-11-28
    • 1970-01-01
    • 2012-10-29
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2019-05-06
    • 1970-01-01
    相关资源
    最近更新 更多