2012-09-24 1 views
24

El color tiene que ver con el cambio de color del fondo puntual de comandos de Windows/textoCómo cambiar el color del texto de cmd con la escritura ventanas lotes cada segundo comando 1

de color 0A - donde 0 es el color de fondo y A es el color de texto

Quiero cambiar este color de texto cada 1 segundo en script de lote de Windows usando una matriz con 1,2,3,4,5,6,7,8,9, A, B, C, D , E, F bruja son los códigos de color.

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 

el comando debe ir cada segundo como esto

color 01 
color 02 
color 03 
.... 
color 0E 
color 0F 

y para éstos he encontrado algunas pequeño script pero no estoy seguro de cómo hacer que funcione para cambiar el color por cada 1 segundo!

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

o esta

@echo off CLS 
for /l %%a in (15,-1,1) do (
color 0A 
cls 
) 
pause 

o esta

SET COUNTDOWN=15 
:COUNTDOWNLOOP 
IF %COUNTDOWN%==0 GOTO END 
color 0A && %R1% 
CLS 
SET /A COUNTDOWN -=1 
GOTO COUNTDOWNLOOP 
:END 
+0

pero podría ser posible! ¡quién sabe! – diti

+1

@Jay start/b cmd/k any.bat ejecutará un archivo por lotes en segundo plano. Por ejemplo, tome el guión de Mark, la respuesta aceptada, colóquelo en un archivo por lotes llamado cycleColors, y luego ejecute start/b cmd/k cycleColors.bat, y su pantalla recorrerá todos los colores mientras le permite hacer cualquier otra cosa que desee . – SgtPooki

Respuesta

19

Esto debería ajustarse a la ley. Suena como una cosa súper molesto tener pasando, pero ahí lo tienes:

@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 
    ) 
) 
+0

gracias @Mark, gracias a la solución! – diti

+1

¿Cómo restablecer el color? –

+1

Simplemente 'color' por sí solo lo restablecerá a los valores predeterminados. – Mark

-2

en determinados códigos de color equipo se puede asignar a diferentes colores RGB mediante la edición de los valores de color en las propiedades de ventana de CMD. Haga clic fácilmente en el color del palete de colores y cambie sus valores de rgb.

4

Pruebe esta secuencia de comandos. Esto puede escribir cualquier texto en cualquier posición de la pantalla y no usar archivos temporales o ejecutables ".com, .exe". Simplemente asegúrese de tener el ejecutable "debug.exe" en las carpetas windows \ system o windows \ system32.

http://pastebin.com/bzYhfLGc

@echo off 
setlocal enabledelayedexpansion 
set /a _er=0 
set /a _n=0 
set _ln=%~4 
goto init 


:howuse --------------------------------------------------------------- 

    echo ------------------ 
    echo ECOL.BAT - ver 1.0 
    echo ------------------ 
    echo Print colored text in batch script 
    echo Written by BrendanLS - http://640kbworld.forum.st 
    echo. 
    echo Syntax: 
    echo ECOL.BAT [COLOR] [X] [Y] "Insert your text" 
    echo COLOR value must be a hexadecimal number 
    echo. 
    echo Example: 
    echo ECOL.BAT F0 20 30 "The 640KB World Forum" 
    echo. 
    echo Enjoy ;^) 
    goto quit 

:error ---------------------------------------------------------------- 

    set /a "_er=_er | (%~1)" 
    goto quit 

:geth ----------------------------------------------------------------- 

     set return= 
     set bts=%~1 

:hshift --------------------------------------------------------------- 

     set /a "nn = bts & 0xff" 
     set return=!h%nn%!%return% 
     set /a "bts = bts >> 0x8" 
     if %bts% gtr 0 goto hshift 
     goto quit 

:init ----------------------------------------------------------------- 

    if "%~4"=="" call :error 0xff 

    (
     set /a _cl=0x%1 
     call :error !errorlevel! 
     set _cl=%1 
     call :error "0x!_cl! ^>^> 8" 
     set /a _px=%2 
     call :error !errorlevel! 
     set /a _py=%3 
     call :error !errorlevel! 
    ) 2>nul 1>&2 

    if !_er! neq 0 (
     echo. 
     echo ERROR: value exception "!_er!" occurred. 
     echo. 
     goto howuse 
    ) 

    set nsys=abcdef 
    set /a _val=-1 

     for /l %%a in (0,1,15) do (
       for /l %%b in (0,1,15) do (
         set /a "_val += 1" 
         set byte=!nsys:~%%a,1!!nsys:~%%b,1! 
         set h!_val!=!byte! 
       ) 
     ) 

    set /a cnb=0 
    set /a cnl=0 

:parse ---------------------------------------------------------------- 

    set _ch=!_ln:~%_n%,1! 
    if "%_ch%"=="" goto perform 

    set /a "cnb += 1" 
    if %cnb% gtr 7 (
     set /a cnb=0 
     set /a "cnl += 1" 
    ) 

    set bln%cnl%=!bln%cnl%! "!_ch!" %_cl% 
    set /a "_n += 1" 
    goto parse 

:perform -------------------------------------------------------------- 

    set /a "in = ((_py * 160) + (_px * 2)) & 0xffff" 
    call :geth %in% 
    set ntr=!return! 
    set /a jmp=0xe 


    @for /l %%x in (0,1,%cnl%) do (
     set bl8086%%x=eb800:!ntr! !bln%%x! 
     set /a "in=!jmp! + 0x!ntr!" 
     call :geth !in! 
     set ntr=!return! 
     set /a jmp=0x10 
    ) 

    (
    echo.%bl80860%&echo.%bl80861%&echo.%bl80862%&echo.%bl80863%&echo.%bl80864% 
    echo.q 
    )|debug >nul 2>&1 

:quit 
+0

Muy buen ejemplo: D – msfclipper

0

estoy haciendo algo muy similar. Me acaba de entrar en la codificación, por lo que esto puede no ser la forma más eficaz de hacerlo, pero esto es cómo lo hice:

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

y así uno y así sucesivamente.

0

He creado una forma sencilla de hacerlo y lo he hecho lo más simple posible. En la "pausa" al final es donde continuará su código. Picture of executed Code

# [CODE]  [DESCRIPTION] 
# 
# echo. &  starts a new line 
# echo.   skips a line 
# PainText 08  08 is color code for gray Type "color ?" for color codes 
# " Red"  The space befor text gives space between the word befor it 


@echo off 
cls && color 08 

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


<nul set /p="" 
call :PainText 08 "Gray" 
call :PainText 04 " Red" 
call :PainText 02 " Green" 
call :PainText 08 " Gray" 
echo. & 
call :PainText 02 "Line 2 Green No space" 
echo. & 
echo. 
call :PainText 01 "H" 
call :PainText 02 "E" 
call :PainText 03 "L" 
call :PainText 03 "L" 
call :PainText 05 "O" 
echo. 


goto :end 

:PainText 
<nul set /p "=%DEL%" > "%~2" 
findstr /v /a:%1 /R "+" "%~2" nul 
del "%~2" > nul 
goto :eof 

:end 
echo. 

pause 
1
echo off & cls 
set NUM=0 1 2 3 4 5 6 7 8 9 A B C D E F 
for %%y in (%NUM%) do ( 
    for %%x in (%NUM%) do (
     color %%y%%x & for /l %%A in (1,1,200) do (dir /s) 
     timeout 1 >nul 
    ) 
) 
pause 
+0

Dado que ya se aceptó una respuesta, incluya alguna información sobre por qué su respuesta es mejor – jhhoff02

Cuestiones relacionadas