我正在批量制作游戏,我正在使用call
函数,因此我可以为代码文本添加颜色。它工作正常,虽然我不能使用'?'在他们中。我可以使用任何变通方法吗?
:colorEcho
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1i
这就是颜色块。
call :colorEcho B " 'Hey, can you come over here, %PlayerName%? I need your help with this new chemical we're working on.' "
会发生什么:
我想保留:colorEcho
,因为我已经离游戏很远,不想重启。
答案 0 :(得分:1)
我使用调用函数,因此我可以为代码文本添加颜色。它工作正常,虽然我不能使用&#39;?&#39;在他们中间。
来自@jeb&#39的回答:How to have multiple colors in a Windows 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"
)
rem Prepare a file "X" with only one dot
<nul > X set /p ".=."
call :colorEcho 0B " 'Hey, can you come over here? I need your help ...' "
echo(
call :colorEcho 0A " 'Yo" &call :colorEcho 0A ^^^^^^^! &call :colorEcho 0A " What's up?' "
echo(
call :colorEcho 0B " 'Oh $#><* that hurts" &call :colorEcho 0A ^^^^^^^!' "
echo(
call :colorEcho 0C " ^!<>&|%%%%"*?"
del X
goto :eof
:colorEcho
set "param=^%~2" !
set "param=!param:"=\"!"
findstr /p /A:%1 "." "!param!\..\X" nul
<nul set /p ".=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%"
exit /b