【问题标题】:how do i only change the color of the backgrund and only the foreground in a batch file我如何在批处理文件中只更改背景颜色和前景颜色
【发布时间】:2023-02-10 21:42:31
【问题描述】:

我只想改变背景的颜色,只改变前景。因此,如果我先更改背景颜色,然后更改前景颜色,我不希望在更改前景色时重置背景颜色,反之亦然。

如果我键入例如颜色 5,我可以让它为前景工作,但我不知道只更改背景。

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    您可以使用color <backgroundcolor><foregroundcolor> 更改两者。 您不能只更改一个而不重置另一个。因此,我会将这些值保存在变量中。

    像这样:

    @echo off
    
    echo FOREGROUND
    set bg=0
    set fg=f
    
    :Loop
    set bg=0
    set fg=f
    color %bg%%fg%
    ping localhost -n 2 >nul
    
    set fg=a
    color %bg%%fg%
    ping localhost -n 2 >nul
    
    set bg=5
    color %bg%%fg%
    ping localhost -n 2 >nul
    
    set fg=9
    color %bg%%fg%
    ping localhost -n 2 >nul
    
    set bg=2
    color %bg%%fg%
    ping localhost -n 2 >nul
    goto :Loop
    

    如果你想要更复杂的东西,你可以这样做:

    @echo off
    
    :: CHECK IF YOU ARE CALLING THE .BAT WITH ARGUMENTS
    if not "%~1"=="" goto %~1
    
    :: IF NOT IT IS THE MAIN
    set bg=0
    set fg=f
    
    :: CREATE YOUR OWN "FUNCTION" THAT CALLS THE OWN .BAT WITH ARGUMENTS
    set clr=call %cd%%~nx0 color
    
    echo color %bg%%fg%
    :: DEMONSTRATION ON HOW TO USE
    :Loop
    ::CHANGE BACK- AND FOREGROUND COLOR
    %clr% f a
    echo color %bg%%fg%
    ping localhost -n 2 >nul
    ::CHANGE FOREGROUND COLOR
    %clr% - 4
    echo color %bg%%fg%
    ping localhost -n 2 >nul
    ::CHANGE BACKGROUND COLOR
    %clr% 9 -
    echo color %bg%%fg%
    ping localhost -n 2 >nul
    goto :Loop
    
    ::SET THE BACK- AND FOREGROUND 
    :color
    if not "%~2"=="-" set bg=%~2
    if not "%~3"=="-" set fg=%~3
    color %bg%%fg%
    

    命令看起来像:

    Change both: %clr% f a
    Foreground : %clr% - 4
    Background : %clr% 9 -
    

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 2018-12-25
      • 2014-08-04
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多