如何使用windows批处理脚本每1秒更改cmd的文本颜色

如何使用windows批处理脚本每1秒更改cmd的文本颜色,cmd,batch-file,Cmd,Batch File,“颜色”命令与更改windows命令promt背景/文本的颜色有关 颜色0A-其中0是背景色,A是文本颜色 我想在windows批处理脚本中每隔1秒使用一个数组来更改这些文本的颜色,数组中的1、2、3、4、5、6、7、8、9、A、B、C、D、E、F是颜色代码 0 = Black 8 = Gray 1 = Blue 9 = Light Blue 2 = Green A = Light Green 3 = Aqua B = Light Aqua 4

“颜色”命令与更改windows命令promt背景/文本的颜色有关

颜色0A-其中0是背景色,A是文本颜色

我想在windows批处理脚本中每隔1秒使用一个数组来更改这些文本的颜色,数组中的1、2、3、4、5、6、7、8、9、A、B、C、D、E、F是颜色代码

0 = Black       8 = Gray
1 = Blue        9 = Light Blue
2 = Green       A = Light Green
3 = Aqua        B = Light Aqua
4 = Red         C = Light Red
5 = Purple      D = Light Purple
6 = Yellow      E = Light Yellow
7 = White       F = Bright White
命令应该像这样每秒执行一次

color 01
color 02
color 03
....
color 0E
color 0F
对于这些,我发现了一些小脚本,但我不知道如何使它工作,以改变颜色每1秒

for /L %%i in (1,1,%n%) do echo !array[%%i]!
还是这个

@echo off CLS
for /l %%a in (15,-1,1) do (
color 0A
cls
)
pause
SET COUNTDOWN=15
:COUNTDOWNLOOP
IF %COUNTDOWN%==0 GOTO END
color 0A && %R1%
CLS
SET /A COUNTDOWN -=1
GOTO COUNTDOWNLOOP
:END
还是这个

@echo off CLS
for /l %%a in (15,-1,1) do (
color 0A
cls
)
pause
SET COUNTDOWN=15
:COUNTDOWNLOOP
IF %COUNTDOWN%==0 GOTO END
color 0A && %R1%
CLS
SET /A COUNTDOWN -=1
GOTO COUNTDOWNLOOP
:END

这应该符合要求。听起来这是一件非常烦人的事情,但你已经做到了:

@echo off
set NUM=0 1 2 3 4 5 6 7 8 9 A B C D E F
for %%x in (%NUM%) do ( 
    for %%y in (%NUM%) do (
        color %%x%%y
        timeout 1 >nul
    )
)

在特定的计算机上,通过编辑cmd窗口属性中的颜色值,可以将颜色代码指定给不同的RGB颜色。轻松单击调色板上的颜色并更改其rgb值。

尝试此脚本。这可以在屏幕的任何位置写入任何文本,并且不使用临时文件或“.com、.exe”可执行文件。只要让舒尔在windows\system或windows\system32文件夹中拥有“debug.exe”可执行文件即可


我正在做一些非常相似的事情。我刚刚开始编写代码,所以这可能不是最有效的方法,但我就是这样做的:

@ECHO OFF
ECHO HELLO
ping localhost -n 1 >nul
cls
color 01
ECHO HELLO
ping localhost -n 1 >nul
cls
color 02
ECHO HELLO 

诸如此类。

我创造了一种简单的方法,并尽可能使之简单。 最后的“暂停”是继续代码的地方。

#[code][DESCRIPTION]
#
#回声,开始新的生产线
#回声。跳过一行
#PainText 08 08是灰色的颜色代码,颜色代码为“颜色”
#“红色”文本前的空格表示文本前的单词之间的空格
@回音
cls&color 08
对于/F“tokens=1,2 delims=#”%%a in(‘“prompt#$H#$E#&echo on&for%%b in(1)do rem“’)do(设置“DEL=%a”)
努尔
后藤:eof
:结束
回声。
暂停
这是一个ip ping,具有自定义超时消息,用于在网站或服务器关闭时引导用户脱机,我可以制作一个工具,根据您的输入打开文件和单个ping,以及一个内置的地理位置工具。

尝试此命令:

@echo off
cls
:loop
echo RAINBOW
color 0
echo RAINBOW
color 1
echo RAINBOW
color 2
echo RAINBOW
color 3
echo RAINBOW
color 4
echo RAINBOW
color 5
echo RAINBOW
color 6
echo RAINBOW
color 8
echo RAINBOW
color 9
echo RAINBOW
color A
echo RAINBOW
color B
echo RAINBOW
color C
echo RAINBOW
color D
echo RAINBOW
color E
echo RAINBOW
goto loop
这将创建一个循环中的变色文本。

编辑:您可以将单词rainbow更改为您想要的任何内容。

为了获得丰富多彩的用户体验,我使用此脚本执行了整套命令。我希望有帮助

@echo off
color 01
timeout /t 2
color 02
timeout /t 2
color 03
timeout /t 2
color 04
timeout /t 2
color 05
timeout /t 2

但这是可能的!谁知道呢@Jay start/b cmd/k any.bat将在后台运行批处理文件。例如,以Mark的脚本(接受的答案)为例,将其放入名为cycleColors的批处理文件中,然后运行start/b cmd/k cycleColors.bat,屏幕将循环显示所有颜色,同时允许您执行任何其他操作。您可以操作终端(cmd)通过转义配置,可以使用不同颜色和背景的单独行或词,请参见:@Diti了解什么?处理批处理文件中的颜色有(远)优越的方法,包括在RGB颜色空间中独立更改颜色的能力,以便在同一行或特定屏幕坐标上以更广泛的颜色打印输出。如何重置颜色?仅凭
color
本身就会将其重置为默认值。我只是想知道,您将如何在几分之一秒的时间内执行此操作?您可以删除
超时
行,使其尽可能快地执行,但是没有一种很好的方法可以让你在一个特定的时间内成批睡眠。有一个非常丑陋的解决方案@godoflamas
ping
一个你肯定知道在你的网络上不存在的IP地址,并使用交换机
-n1
让命令只ping一次,然后
-w500
等待500的响应毫秒。按你喜欢的方式换500。这当然不是一个很好的方法,它会在你的网络中产生流量,但它是有效的。非常好的例子:D因为一个答案已经被接受,包括一些关于为什么你的答案更好的信息。虽然这个代码片段可能是解决方案,但它确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。您在
color
命令中使用了无效的数字。除此之外,你的答案与8年前被接受的答案完全相同,因此你的答案没有任何好处,只是令人讨厌的噪音。请删除它。它不再工作了
@echo off
cls
:loop
echo RAINBOW
color 0
echo RAINBOW
color 1
echo RAINBOW
color 2
echo RAINBOW
color 3
echo RAINBOW
color 4
echo RAINBOW
color 5
echo RAINBOW
color 6
echo RAINBOW
color 8
echo RAINBOW
color 9
echo RAINBOW
color A
echo RAINBOW
color B
echo RAINBOW
color C
echo RAINBOW
color D
echo RAINBOW
color E
echo RAINBOW
goto loop
@echo off
color 01
timeout /t 2
color 02
timeout /t 2
color 03
timeout /t 2
color 04
timeout /t 2
color 05
timeout /t 2
@echo off
set NUM=0 1 2 3 4 5 6 7 8 9 A B C D E F 31 32 33 34 35 36 37 41 42 43 44 45 46 90 91 92 93 94 95 96 97 100 101 102 103 104 105 106 107 
for %%x in (%NUM%) do ( 
    for %%y in (%NUM%) do (
        color %%x%%y
cls
echo Himel Sarkar
        timeout 1 >nul
    )
)

pause