3

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

@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”部分着色?

编辑:我希望它在输入时被着色。对于所有不理解的人,这是我最初的问题。

4

3 回答 3

7

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

可以使用 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
于 2013-03-01T14:33:12.060 回答
1

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

于 2014-02-13T12:31:23.340 回答
0

您可以使用名为 cecho.bat http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files的程序

于 2013-03-01T08:55:57.547 回答