2012-09-24 35 views
24
lệnh

Màu đã làm với việc thay đổi màu sắc của nền Promt cửa sổ lệnh/văn bảnLàm thế nào để thay đổi màu sắc văn bản của cmd với kịch bản windows batch mỗi 1 giây

0A màu - trong đó 0 là màu nền và A là màu văn bản

Tôi muốn thay đổi màu văn bản sau mỗi 1 giây trong tập lệnh theo lô của Windows bằng cách sử dụng mảng có 1,2,3,4,5,6,7,8,9, A, B, C, D , E, F phù thủy là các mã màu.

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 

lệnh nên đi mỗi giây như thế này

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

và cho những tôi thấy một số kịch bản ít nhưng im không chắc chắn làm thế nào để làm cho nó làm việc để thay đổi màu sắc cho mỗi 1 giây!

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

hay này

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

hay này

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

nhưng nó có thể là tốt! ai biết! – diti

+1

@Jay start/b cmd/k any.bat sẽ chạy một tập tin thực thi trong nền. Ví dụ, lấy kịch bản của Mark, câu trả lời được chấp nhận, đặt nó trong một tệp batch được gọi là cycleColors, và sau đó chạy start/b cmd/k cycleColors.bat, và màn hình của bạn sẽ chuyển qua màu sắc trong khi cho phép bạn làm bất cứ điều gì bạn muốn . – SgtPooki

Trả lời

19

này nên phù hợp với những hóa đơn. Nghe có vẻ như một điều siêu khó chịu khi phải xảy ra, nhưng có bạn có nó:

@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

cảm ơn @Mark, cảm ơn giải pháp! – diti

+1

Cách đặt lại màu? –

+1

Chỉ cần 'màu' tự nó sẽ đặt lại thành mặc định. – Mark

-2

trên mã màu máy tính cụ thể được gán cho màu RGB khác nhau bằng cách chỉnh sửa các giá trị màu trong cửa sổ thuộc tính cmd. Dễ dàng nhấp vào màu trên palete màu và thay đổi giá trị rgb của chúng.

4

Hãy thử tập lệnh này. Điều này có thể viết bất kỳ văn bản nào trên bất kỳ vị trí nào của màn hình và không sử dụng các tệp tạm thời hoặc các tệp thi hành ".com, .exe". Chỉ cần làm cho shure bạn có thực thi "debug.exe" trong windows \ system hoặc windows \ system32 thư mục.

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

Ví dụ rất hay: D – msfclipper

0

Tôi đang làm một cái gì đó rất giống nhau. Tôi chỉ bắt đầu viết mã, vì vậy đây có thể không phải là cách hiệu quả nhất để làm điều đó, nhưng đây là cách tôi đã làm điều đó:

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

và cứ như vậy.

0

Tôi đã tạo một cách đơn giản để làm như vậy và làm cho nó đơn giản nhất có thể. Tại "tạm dừng" ở cuối là nơi bạn sẽ tiếp tục mã của bạn. 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

Vì câu trả lời đã được chấp nhận, hãy bao gồm một số thông tin về lý do câu trả lời của bạn tốt hơn – jhhoff02

Các vấn đề liên quan