如何在调用的windows批处理文件中输出彩色文本,并将输出重定向到文件?

如何在调用的windows批处理文件中输出彩色文本,并将输出重定向到文件?,windows,batch-file,colors,stdout,Windows,Batch File,Colors,Stdout,我正在运行一个批处理文件,std输出被重定向到一个文件,我想在控制台上显示的输出中获得彩色文本。我发现了一些提供彩色文本的东西,但我不知道如何将其发送到控制台。这可以工作,但在重定向stdout时不起作用: 我这样调用批处理文件: mybatch>myoutput.txt 我的批处理文件如下所示: :: Sample Batch file @echo off @echo this goes to the text file when std output is redirected @echo

我正在运行一个批处理文件,std输出被重定向到一个文件,我想在控制台上显示的输出中获得彩色文本。我发现了一些提供彩色文本的东西,但我不知道如何将其发送到控制台。这可以工作,但在重定向stdout时不起作用:

我这样调用批处理文件:
mybatch>myoutput.txt

我的批处理文件如下所示:

:: Sample Batch file
@echo off
@echo this goes to the text file when std output is redirected
@echo this goes to the console >CON
call :ColorText 19 "This uses the above referenced method to print in blue, but doesn't go to the console" & echo( 
.
.
.
:ColorText
    <nul set /p ".=%DEL%" > "%~2"
    findstr /v /a:%1 /R "^$" "%~2" nul
    del "%~2" > nul 2>&1
    goto :eof
::示例批处理文件
@回音
@当std输出被重定向时,回显该文件到文本文件
@将其回显到控制台>控制台
call:ColorText 19“这使用上述引用的方法以蓝色打印,但不转到控制台”&echo(
.
.
.
:彩色文本
"%~2"
findstr/v/a:%1/R“^$”“%~2”个
删除“%~2”>nul 2>&1
后藤:eof

如何让文本进入控制台?< /p> ,而不是使用<代码> FindStr <代码>,您可以考虑从批处理文件中使用<代码> PuthSub:

PowerShell-NoProfile“'这将写入文件并以蓝色打印到控制台'| Add Content'output.log'-PassThru | Write Host-ForegroundColor蓝色”
可以使用别名将其稍微缩短:

PowerShell-NoP“'这将写入文件,并以蓝色“|AC”output.log'-Pas | Write Host-F blue”打印到控制台”

您甚至可以同时指定背景色[
-BackgroundColor
|
-B
]

PowerShell-NoP“'这将写入文件,并以黄色背景的蓝色打印到控制台'|AC'output.log'-Pas | Write Host-F blue-B yellow”

允许的颜色为
黑色
深蓝色
深绿色
深黑色
深黑色
深黄色
灰色
深灰色
蓝色
绿色
青色
红色
洋红色
White

nul
本身的意思是什么?你需要在
之前放置
goto:EOF
:ColorText
!variable
DEL
设置为什么?不确定nul的意思,只是从引用的链接复制/粘贴了一份。理解goto:EOF…这只是示例代码你似乎选择了只使用部分Jeb回答中所需代码的编号。