2013-02-28 2 views
2

안녕하세요, 저는 폴더에서 프로그램을 실행하는 프로그램을 만들고 있습니다. 코드는 다음과 같습니다.사용자 별 일괄 색상 입력

@echo off 
SETLOCAL EnableDelayedExpansion 
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
    set "DEL=%%a" 
) 
title Launcher 
call :ColorText 0a "Launcher" 
echo. 
:CMD 
set /p cmd=">>> " 
if not defined cmd goto CMD 
call "%CD%"\bin\%cmd% 
echo %cmd%>"%CD%\Commands_Log\%cmd% 
goto CMD 
:ColorText 
echo off 
<nul set /p ".=%DEL%" > "%~2" 
findstr /v /a:%1 /R "^$" "%~2" nul 
del "%~2" > nul 2>&1 
goto :eof 

정말 사용자의 입력에 색상을 지정하는 방법을 알고 싶습니다. 예를 들어 내 메시지가

C처럼 간다 : \> ABCD

자, 어떻게 만 "ABCD"일부 색상합니까?

편집 : 입력 할 때 색깔을 지정하고 싶습니다. 이것은 이해하지 못한 모든 사람들을위한 본래의 질문이었습니다.

+1

[Windows 명령 줄에서 다른 색상으로 반향하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/2048509/how-to-echo-with-different-colors-in-the-windows- 명령 줄) – Vicky

+0

일반적인 방법은 없지만 입력 한 문자를 다른 색상으로 표시되는 변수에 추가하는 선택 명령을 넣을 수 있습니다. 나는 그것을 추천하지 않을 것이다. –

+0

@Vicky 중복되지 않습니다 ... 여기 입력을 채색하고 싶습니다 .... 입력 만 .... – chetasmr

답변

6

cecho.bat 호출 된 프로그램, 다음 출력 색상으로 각 키를 사용할 수 있습니다. 배치에 색칠

이의 Findstr와 함께 할 수는 how to have multiple colors in a batch file?
은 하나의 키 xcopy를 수행 할 수 있습니다 얻으 설명했다.

@echo off 
call :color_init 
setlocal EnableDelayedExpansion 

:keyLoop 
call :GetKey 
if not defined key exit /b 
call :color 1a key 
goto :keyLoop 


:GetKey 
set "key=" 
for /F "usebackq delims=" %%L in (`xcopy /L /w "%~f0" "%~f0" 2^>NUL`) do (
    if not defined key set "key=%%L" 
) 
set "key=%key:~-1%" 
exit /b 

:color_init 
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
    set "DEL=%%a" 
) 
rem Prepare a file "X" with only one dot 
<nul > X set /p ".=." 
exit /b 

:color 
setlocal EnableDelayedExpansion 
set "param=!%~2!" 
set "param=!param:"=\"!" 
findstr /p /A:%1 "." "!param!\..\X" nul 
<nul set /p ".=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%" 
endlocal 
exit /b 

for /f "delims=" %%A in ('echo hello') do set "var=%%A" 
echo %var% 
exit /b 
+0

감사합니다. 그냥 내가 필요한 것! – chetasmr

1

예, cmdcolor으로 가능합니다. 입력 바로 전에 echo \033[93m을 입력 한 다음 나중에 echo \033[0m을 입력하십시오. 그 에코들 사이에 입력 된 모든 것은 노란색으로 표시됩니다.