2013-02-28 66 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 2013-02-28 17:14:55

+0

沒有傳統的方法來執行此操作,但是您可以將選擇命令添加到變量中,然後以不同的顏色顯示變量。我不會推薦它。 – 2013-02-28 21:36:59

+0

@Vicky它不是重複的...在這裏我想輸入被彩色....只有輸入.... – chetasmr 2013-03-01 06:18:56

回答

6

由於味酸教授評論你需要編寫自己的密鑰輸入程序,然後再輸出一個顏色的每個關鍵。

批量着色可以通過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 2013-03-02 10:05:45

1

是的,有可能與cmdcolor。只需在輸入前輸入echo \033[93m,然後再輸入echo \033[0m。在這些回聲之間輸入的所有內容都將以黃色顯示。