batch - 用户输入的颜色

时间:2013-02-28 16:45:22

标签: batch-file

您好我正在制作一个程序,它将从文件夹启动程序。这是代码:

@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:\&gt; ABCD

现在,我如何只为“abcd”部分着色?

编辑:我希望它在打字时被着色。对于每个不理解的人来说,这是我原来的问题。

3 个答案:

答案 0 :(得分:7)

正如Pickle教授所说,你需要编写自己的键输入,然后用颜色输出每个键。

批量着色可以使用描述how to have multiple colors in a batch file?的Findstr完成 获得单个密钥可以使用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

答案 1 :(得分:1)

是的,可以使用cmdcolor。在输入之前只需echo \033[93m,然后在echo \033[0m之后。这些回声之间输入的所有内容都是黄色的。

答案 2 :(得分:0)