You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理背景/前景色设置菜单实现及防重置优化问询

批处理颜色设置菜单解决方案

以下是修复并优化后的代码,解决了返回菜单重置颜色、代码冗余的问题,同时完善了输入逻辑:

@echo off
setlocal enabledelayedexpansion

:: 初始化颜色变量:背景(bg)、前景(fg),默认黑底白字,同时保存颜色名称用于显示
set "bg=0"
set "bg_name=黑色"
set "fg=7"
set "fg_name=白色"
color !bg!!fg!

:main_menu
cls
echo 当前颜色:背景=%bg_name%,前景=%fg_name%
echo.
echo 1. 颜色设置
echo 2. 退出
echo.
set "choice="
set /p "choice= 请输入选项编号:"
if not defined choice goto main_menu
if "%choice%" equ "1" goto settings_menu
if "%choice%" equ "2" exit /b
goto main_menu

:settings_menu
cls
echo 颜色设置菜单
echo.
echo 1. 修改文字颜色(前景色)
echo 2. 修改背景色
echo 3. 返回主菜单
echo.
set "choice="
set /p "choice= 请输入选项编号:"
if not defined choice goto settings_menu
if "%choice%" equ "1" goto fg_color_menu
if "%choice%" equ "2" goto bg_color_menu
if "%choice%" equ "3" goto main_menu
goto settings_menu

:fg_color_menu
cls
echo 选择文字颜色
echo.
echo 1. 蓝色
echo 2. 灰色
echo 3. 返回设置菜单
echo.
set "choice="
set /p "choice= 请输入选项编号:"
if not defined choice goto fg_color_menu
if "%choice%" equ "1" (
    set "fg=1"
    set "fg_name=蓝色"
    color !bg!!fg!
) else if "%choice%" equ "2" (
    set "fg=8"
    set "fg_name=灰色"
    color !bg!!fg!
) else if "%choice%" equ "3" (
    goto settings_menu
) else (
    goto fg_color_menu
)
goto fg_color_menu

:bg_color_menu
cls
echo 选择背景色
echo.
echo 1. 绿色
echo 2. 紫色
echo 3. 返回设置菜单
echo.
set "choice="
set /p "choice= 请输入选项编号:"
if not defined choice goto bg_color_menu
if "%choice%" equ "1" (
    set "bg=2"
    set "bg_name=绿色"
    color !bg!!fg!
) else if "%choice%" equ "2" (
    set "bg=5"
    set "bg_name=紫色"
    color !bg!!fg!
) else if "%choice%" equ "3" (
    goto settings_menu
) else (
    goto bg_color_menu
)
goto bg_color_menu

关键改进说明

  • 颜色状态持久化:用bg、fg变量保存当前颜色的十六进制值,搭配bg_name、fg_name显示当前设置,每次修改后立即用color !bg!!fg!应用,cls清屏不会重置已设置的颜色(color命令设置的是控制台全局属性)。
  • 输入逻辑优化:初始化choice为空,判断输入是否有效,避免空输入导致的语法错误。
  • 代码去冗余:将菜单拆分为独立逻辑块,每个菜单仅处理自身选项,避免重复的跳转判断。
  • 完善返回逻辑:每个子菜单都提供返回上级的选项,返回时自动保留当前颜色设置。

原代码核心问题

  1. 缺少实际执行颜色设置的代码,仅留注释占位。
  2. 输入判断存在漏洞,空输入或非预期值会触发语法错误。
  3. 跳转逻辑混乱,选择前景色后直接跳转到背景色菜单,未保存选择结果。
  4. 未保存颜色状态,返回菜单时无法维持已设置的颜色。

内容的提问来源于stack exchange,提问作者ling0nriz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:16:47