我正在编写一个批量图像查看器,用屏幕上显示的像素设置实际的彩色字,线条或甚至只是字母在不同颜色的同一行。说我正在制作像素类型的图像查看器。问题是我在堆栈溢出时找到的行着色代码不允许我在代码中调用命令时输入变量而不是颜色代码(P.S。变量包含颜色代码)。 这是让我进行颜色编码的实际命令的代码:
:Echo.Color %1=Color %2=Str [%3=/n]
setlocal enableDelayedExpansion
set "str=%~2"
:Echo.Color.2
set "str=a%ECHO.DEL%!str:\=a%ECHO.DEL%\..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:/=a%ECHO.DEL%/..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:"=\"!"
pushd "%ECHO.DIR%"
findstr /p /r /a:%~1 "^^-" "!str!\..\!ECHO.FILE!" nul
popd
for /l %%n in (1,1,12) do if not "!ECHO.FILE:~%%n!"=="" <nul set /p "=%ECHO.DEL%"
<nul set /p "=%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%"
if not "%~3"=="" echo.
endlocal & goto :eof
:Echo.Color.Var %1=Color %2=StrVar [%3=/n]
if not defined %~2 goto :eof
setlocal enableDelayedExpansion
set "str=!%~2!"
goto :Echo.Color.2
:Echo.Color.Init
set "ECHO.COLOR=call :Echo.Color"
set "ECHO.DIR=%~dp0"
set "ECHO.FILE=%~nx0"
set "ECHO.FULL=%ECHO.DIR%%ECHO.FILE%"
for /F "tokens=1 delims=#" %%a in ('"prompt #$H# & echo on & for %%b in (1) do rem"') do set "ECHO.DEL=%%a"
goto :eof
显示内容的命令是:
call :Echo.Color E0 "a"
将以黄色背景和黑色字体颜色显示“a”字母。
我想要做的实际事情是:
call :Echo.Color %c1% "a"
%c1%
实际上是从c1.txt文件设置的,它的内容是E0,它应该产生相同的结果,只是使用.txt文件,我可以制作自己的图片格式,然后任何人都可以编辑文件,制作自己的彩色像素,制作图片。
这个答案的解决方案是,有人给了我一个我不喜欢的颜色代码,更聪明的是实际编辑这个代码,并以某种方式帮助我制作这个东西,以便它可以使用变量。或者我有另一种解决方案,但我不知道它是否有效以及如何使其发挥作用。我可以再次使用变量回显所有命令,然后将其保存到文本文件(每一个)中,然后加载它们但我不知道如何使用变量作为实际命令。