最近我在批處理文件中發現了大約coloringecho
,一切都很好,直到我在Windows XP上試用它。此錯誤(?)在高版本上不可重現(至少在w7,w8上)奇怪的字符串以winXP結尾的彩色回顯(findstr)
究竟是什麼原因導致. .
在與call :cecho <colors> "<string>"
調用時出現在字符串後面?如何擺脫它,仍然使它在winXP和更高版本上工作?
@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"
)
call :cecho 03 "I am colorful, yay" & echo.
pause
exit
:cecho
@echo off
<nul set /p "=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
輸出:
I am colorful, yay:. .
Press any key to continue . . .
編輯: PS:我沒有興趣在外部程序,VBS或PowerShell的。請提供純批量解決方案。
EDIT2:
感謝@sokin我找到了一個解決方案,但是傑布@的解決方案,每次創建一個文件,但不刪除它。因此簡單的del
修復了它。
@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"
)
<nul > X set /p ".=."
call :color 1a "a"
call :color 1b "b"
call :color 1c "^!<>&| %%%%"*?"
del "%~dp0X"
pause
exit
:color
set "param=^%~2" !
set "param=!param:"=\"!"
findstr /p /A:%1 "." "!param!\..\X" nul
<nul set /p ".=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%"
嘗試的NirCmd(這裏下載:http://www.nirsoft.net/utils/nircmd.html)。像這樣使用它:'nircmdc setconsolecolor 10' - 隨後書寫的文字將以綠色打印。 – gordon
對不起,在另一個文件中改變顏色不感興趣。 – KeyWeeUsr
對不起,不會有彩色文字。 – gordon