我最近开始制作一个新项目。我想通过用set /p
键入BG和Text的颜色代码来更改颜色,但是当我加入BG颜色变量和文本颜色变量时,cmd窗口会关闭。
这是代码
:ColorText
CLS
SET /P "Input.User.SysConfigTextColor=Please enter the text Color:"
IF /I "%Input.User.SysConfigTextColor%" == "A" GOTO :ColorBG
IF /I "%Input.User.SysConfigTextColor%" == "B" GOTO :ColorBG
IF /I "%Input.User.SysConfigTextColor%" == "C" GOTO :ColorBG
IF /I "%Input.User.SysConfigTextColor%" == "D" GOTO :ColorBG
IF /I "%Input.User.SysConfigTextColor%" == "E" GOTO :ColorBG
IF /I "%Input.User.SysConfigTextColor%" == "F" GOTO :ColorBG
SET /A "Input.User.SysConfigTextColora=%Input.User.SysConfigTextColor%"
IF %Input.User.SysConfigTextColora% GTR -1 IF %Input.User.SysConfigTextColora% LSS 10 GOTO :ColorBG
GOTO :ColorText
:ColorBG
CLS
SET /P "Input.User.SysConfigBGColor=Please enter the background Color:"
IF /I "%Input.User.SysConfigBGColor%" == "A" GOTO :ColorD
IF /I "%Input.User.SysConfigBGColor%" == "B" GOTO :ColorD
IF /I "%Input.User.SysConfigBGColor%" == "C" GOTO :ColorD
IF /I "%Input.User.SysConfigBGColor%" == "D" GOTO :ColorD
IF /I "%Input.User.SysConfigBGColor%" == "E' GOTO :ColorD
IF /I "%Input.User.SysConfigBGColor%" == "F" GOTO :ColorD
SET /A "Input.User.SysConfigBGColora=%Input.User.SysConfigBGColor%"
IF %Input.User.SysConfigBGColora% GTR -1 IF %Input.User.SysConfigBGColora% LSS 10 GOTO :ColorD
GOTO :ColorBG
:ColorD
CLS
SET Var.System.Color=%Input.User.SysConfigBGColor%%Input.User.SysConfigTextColor%
ECHO %Input.User.SysConfigBGColor%%Input.User.SysConfigTextColor%>"%~Dp0C\Blah\Color.dat"
请帮我找出问题所在,感谢您的帮助。
答案 0 :(得分:3)
我们如何简化你的逻辑。您知道,制作大型变量名会增加您的环境大小并减慢批处理文件的速度。这是验证用户输入的更好方法。
@echo off
:ColorText
CLS
SET /P "TextColor=Please enter the text Color:"
FOR %%G IN (0 1 2 3 4 5 6 7 8 9 A B C D E F) DO IF /I "%TextColor%"=="%%G" GOTO ColorBG
GOTO ColorText
:ColorBG
cls
SET /P "BGColor=Please enter the background Color:"
FOR %%G IN (0 1 2 3 4 5 6 7 8 9 A B C D E F) DO IF /I "%BGColor%"=="%%G" GOTO ColorD
GOTO ColorBG
:ColorD
SET Var.System.Color=%BGColor%%TextColor%
ECHO %BGColor%%TextColor%
pause