【问题标题】:What is the fastest color function in batch?批处理中最快的颜色函数是什么?
【发布时间】:2015-10-23 00:57:19
【问题描述】:

我最近尝试在一个 cmd 窗口中使用多种颜色。我发现的每个颜色函数(例如这个:http://www.dostips.com/forum/viewtopic.php?p=41155)都非常慢,而且加载颜色图需要很长时间。

如果你问,我所说的颜色图是指这段代码:

@echo off
for %%a in (0 1 2 3 4 5 6 7 8 9 a b c d e f) do (
    for %%b in (0 1 2 3 4 5 6 7 8 9 a b c d e f) do (
        call :color %%a%%b %%a%%b
        if %%a%%b==1f call :color \n
        if %%a%%b==3f call :color \n
        if %%a%%b==5f call :color \n
        if %%a%%b==7f call :color \n
        if %%a%%b==9f call :color \n
        if %%a%%b==bf call :color \n
        if %%a%%b==df call :color \n
        if %%a%%b==ff call :color \n
    )
)

:color - some color function

对于批处理中的每个颜色函数,此代码运行速度非常慢。我想这是因为在 %Temp% 目录中创建文件。

如果一次使用很多颜色,是否有一个几乎立即生效的批处理颜色功能?外部程序或 powershell 也很重要!

【问题讨论】:

  • 您是否注意到在您发布的链接中,他还创建了一个名为 out.exe 的二进制可执行文件。

标签: batch-file cmd console


【解决方案1】:

是的,那些纯批处理解决方案很慢。试试cecho:http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files

速度非常快,即使同时显示数百种颜色也能立即显示输出。

希望我能帮上忙:)

【讨论】:

  • 谢谢!没想到有人这么快回答!我试试看!
【解决方案2】:

如果您正在寻找 powershell 解决方案,Write-Host 支持控制台颜色:

Clear-Host
Write-Host "######" -ForegroundColor Green
Write-Host '" ' -ForegroundColor Yellow -NoNewline
Write-Host '21' -ForegroundColor Red -NoNewline
Write-Host ' !' -ForegroundColor Yellow
Write-Host '######' -ForegroundColor Cyan

【讨论】:

  • 我也去看看 :)
【解决方案3】:

在 Windows 10 中,由于实现了 ANSI 转义颜色序列,您可以尝试:

@echo off

setlocal
call :setESC

cls
echo %ESC%[101;93m STYLES %ESC%[0m
echo ^<ESC^>[0m %ESC%[0mReset%ESC%[0m
echo ^<ESC^>[1m %ESC%[1mBold%ESC%[0m
echo ^<ESC^>[4m %ESC%[4mUnderline%ESC%[0m
echo ^<ESC^>[7m %ESC%[7mInverse%ESC%[0m
echo.
echo %ESC%[101;93m NORMAL FOREGROUND COLORS %ESC%[0m
echo ^<ESC^>[30m %ESC%[30mBlack%ESC%[0m (black)
echo ^<ESC^>[31m %ESC%[31mRed%ESC%[0m
echo ^<ESC^>[32m %ESC%[32mGreen%ESC%[0m
echo ^<ESC^>[33m %ESC%[33mYellow%ESC%[0m
echo ^<ESC^>[34m %ESC%[34mBlue%ESC%[0m
echo ^<ESC^>[35m %ESC%[35mMagenta%ESC%[0m
echo ^<ESC^>[36m %ESC%[36mCyan%ESC%[0m
echo ^<ESC^>[37m %ESC%[37mWhite%ESC%[0m
echo.
echo %ESC%[101;93m NORMAL BACKGROUND COLORS %ESC%[0m
echo ^<ESC^>[40m %ESC%[40mBlack%ESC%[0m
echo ^<ESC^>[41m %ESC%[41mRed%ESC%[0m
echo ^<ESC^>[42m %ESC%[42mGreen%ESC%[0m
echo ^<ESC^>[43m %ESC%[43mYellow%ESC%[0m
echo ^<ESC^>[44m %ESC%[44mBlue%ESC%[0m
echo ^<ESC^>[45m %ESC%[45mMagenta%ESC%[0m
echo ^<ESC^>[46m %ESC%[46mCyan%ESC%[0m
echo ^<ESC^>[47m %ESC%[47mWhite%ESC%[0m (white)
echo.
echo %ESC%[101;93m STRONG FOREGROUND COLORS %ESC%[0m
echo ^<ESC^>[90m %ESC%[90mWhite%ESC%[0m
echo ^<ESC^>[91m %ESC%[91mRed%ESC%[0m
echo ^<ESC^>[92m %ESC%[92mGreen%ESC%[0m
echo ^<ESC^>[93m %ESC%[93mYellow%ESC%[0m
echo ^<ESC^>[94m %ESC%[94mBlue%ESC%[0m
echo ^<ESC^>[95m %ESC%[95mMagenta%ESC%[0m
echo ^<ESC^>[96m %ESC%[96mCyan%ESC%[0m
echo ^<ESC^>[97m %ESC%[97mWhite%ESC%[0m
echo.
echo %ESC%[101;93m STRONG BACKGROUND COLORS %ESC%[0m
echo ^<ESC^>[100m %ESC%[100mBlack%ESC%[0m
echo ^<ESC^>[101m %ESC%[101mRed%ESC%[0m
echo ^<ESC^>[102m %ESC%[102mGreen%ESC%[0m
echo ^<ESC^>[103m %ESC%[103mYellow%ESC%[0m
echo ^<ESC^>[104m %ESC%[104mBlue%ESC%[0m
echo ^<ESC^>[105m %ESC%[105mMagenta%ESC%[0m
echo ^<ESC^>[106m %ESC%[106mCyan%ESC%[0m
echo ^<ESC^>[107m %ESC%[107mWhite%ESC%[0m
echo.
echo %ESC%[101;93m COMBINATIONS %ESC%[0m
echo ^<ESC^>[31m                     %ESC%[31mred foreground color%ESC%[0m
echo ^<ESC^>[7m                      %ESC%[7minverse foreground ^<-^> background%ESC%[0m
echo ^<ESC^>[7;31m                   %ESC%[7;31minverse red foreground color%ESC%[0m
echo ^<ESC^>[7m and nested ^<ESC^>[31m %ESC%[7mbefore %ESC%[31mnested%ESC%[0m
echo ^<ESC^>[31m and nested ^<ESC^>[7m %ESC%[31mbefore %ESC%[7mnested%ESC%[0m

:setESC
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set ESC=%%b
  exit /B 0
)
exit /B 0

这是由

写的

Michele Locati

这真的很快,没有 PowerShell 和 FindStr 减速。

【讨论】:

    猜你喜欢
    • 2013-07-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2019-05-26
    • 2013-03-11
    相关资源
    最近更新 更多