2017-03-26 22 views
1

我想着色我的批處理文件的特定部分,並想知道如果它是甚至可能的,B如果我只能爲特定的文本顏色而不是整個cmd窗口。着色批處理文件的特定部分

這是我的測試代碼中,我希望Y色和N綠色和紅色:

@echo off 
:start 
echo hello, are you a Robot? 
:choice 
echo How do you answer? 
set /P c=[Y/N] 
if /I "%c%" EQU "Y" goto :start 
if /I "%c%" EQU "N" goto :shutdown 
goto :choice 
:shutdown 
exit 
+2

請檢查這是否解決您的問題http://stackoverflow.com/questions/21660249/how-do-i-make-one-particular-line-of-a-batch-file-a-different-color- then-the -othoth –

+2

可能的重複[如何使一個批處理文件的某一行不同於其他顏色?](http://stackoverflow.com/questions/21660249/how-do-i-make-一個特定行的批處理文件,一個不同的顏色,然後,其他) –

+0

http://stackoverflow.com/questions/4339649/how-to-have-multiple-colors-in -a-windows-batch-file/5344911#5344911 – Aacini

回答

-2

您可以在批處理文件中使用ANSI escape codes

+0

我想你是被投票了,因爲只有連接的答案不足以長期。鏈接往往波動,沒有任何東西可以幫助別人。 – LotPings

+0

...也許這只是一個「答案」。不過,這將是一個很好的評論。 – Aacini

0

你可以做這樣的事情:

@echo off & setlocal enabledelayedexpansion 
Call :init 
:start 
cls 
Call :Color 0E " Hello, are you a Robot " 0 & echo|set /p="?" 
echo(
:choice 
Call :Color 0A " How do you answer " 0 & echo|set /p="?" 
echo(
set /P c=[Y/N] 
if /I "%c%" EQU "Y" goto :start 
if /I "%c%" EQU "N" goto :shutdown 
goto :choice 
:shutdown 
exit 

::************************************************************************************* 
:init 
prompt $g 
for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a" 
exit /b 
::************************************************************************************* 
:color 
set nL=%3 
if not defined nL echo requires third argument & pause > nul & goto :eof 
if %3 == 0 (
    <nul set /p ".=%bs%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof 
) else if %3 == 1 (
    echo %bs%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof 
) 
exit /b 
::************************************************************************************* 
0
@ECHO OFF 
SETLOCAL 
SET "esc=" 
SET "normal=%esc%[1;33m" 
SET "red=%esc%[1;31m" 
SET "green=%esc%[1;32m" 
:start 
echo hello, are you a Robot? 
:choice 
echo How do you answer? 
set /P c=[%green%Y%normal%/%red%N%normal%] 
if /I "%c%" EQU "Y" goto start 
if /I "%c%" EQU "N" goto shutdown 
goto choice 
:shutdown 

我的正常顏色設置爲黑底黃字。轉義字符很好 - 逃脫,但它可能會呈現在SO上。我使用editplus,它允許輸入控制字符。其他編輯可能會以其他方式允許。

除此之外,它只是根據需要切換顏色並在顯示特色後恢復爲普通顏色。

我添加了一個setlocal所以當批關閉該環境的變化將恢復(這是一般情況下,你似乎是成立exit

我也是在除去冒號goto聲明。這裏需要冒號的唯一條件是具有特殊含義的goto :eof的具體情況。

+0

嗯 - 「逃脫」角色的渲染似乎是一種隱形斗篷。 'esc ='和'''之間需要有一個實際的'Esc' – Magoo