2013-02-28 2 views
2

Привет, я делаю программу, которая запустит программу из папки. Вот код:batch - цвет ввода пользователем

@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" часть ??

EDIT: Я хочу, чтобы он был окрашен, поскольку он набирается. Это был мой первоначальный вопрос для всех, кто не понимал.

+1

Возможный дубликат [Как эхо с разными цветами в командной строке Windows] (http://stackoverflow.com/questions/2048509/how-to-echo-with-different-colors-in-the-windows- командной строки) – Vicky

+0

Существует не обычный метод для этого, но вы можете добавить команду выбора, в которую добавляется письмо, которое они помещают в переменную, которая затем отображается другим цветом. Я бы не рекомендовал его. –

+0

@Vicky Это не дубликат ... здесь я хочу, чтобы вход был цветным .... ТОЛЬКО вход .... – chetasmr

ответ

6

Как Prof Рассол комментарий вы должны написать свой собственный ключ ввода, а затем выход каждого ключа с цветом.

Окрашивание в партии может быть выполнено с помощью 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. Все набранные между этими эхами будут желтыми.

Смежные вопросы