颜色命令不会在批处理文件中执行

时间:2016-12-23 00:36:02

标签: batch-file variables colors

我最近开始制作一个新项目。我想通过用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"

请帮我找出问题所在,感谢您的帮助。

1 个答案:

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