不能用'?'批量调用函数

时间:2016-03-28 23:52:29

标签: batch-file vbscript colors

我正在批量制作游戏,我正在使用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.' "

会发生什么:

Picture of the program

我想保留:colorEcho,因为我已经离游戏很远,不想重启。

1 个答案:

答案 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