如何在调用的windows批处理文件中输出彩色文本,并将输出重定向到文件?
我正在运行一个批处理文件,std输出被重定向到一个文件,我想在控制台上显示的输出中获得彩色文本。我发现了一些提供彩色文本的东西,但我不知道如何将其发送到控制台。这可以工作,但在重定向stdout时不起作用: 我这样调用批处理文件:如何在调用的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
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
!variableDEL
设置为什么?不确定nul的意思,只是从引用的链接复制/粘贴了一份。理解goto:EOF…这只是示例代码你似乎选择了只使用部分Jeb回答中所需代码的编号。