如何创建带嵌套选择功能的Windows批处理脚本
实现带嵌套二级选择的批处理文件
基于你的现有代码,我们可以通过标签跳转的方式实现嵌套选择功能。下面是修改后的完整代码,以选项2(Availability-Capacity Deck Folder Path)为例添加二级子菜单,你可以根据需求扩展其他选项:
@ECHO off SETLOCAL ENABLEDELAYEDEXPANSION cls :start title [ Lazy Planner] ECHO =========================================================================================== ECHO. type "C:\Automation\doh.txt" ECHO. ECHO =========================================================================================== ECHO. ECHO 1. WSR Report Folder Path ECHO. ECHO 2. Availability-Capacity Deck Folder Path ECHO. ECHO 3. Pre-CAB Checklist Folder Path ECHO. ECHO 4. Exit Lazy Planner ECHO. ECHO ************************************** set /p choice= Welcome! Please enter your choice: REM 处理空输入或无效输入 if '%choice%'=='' ( ECHO Error: Invalid input, please try again. pause >nul cls goto start ) REM 主菜单选项处理 if '%choice%'=='1' ( start "\\Dell_BOI_MASS\Weekly Status Report\Work In Progress Report\" goto start ) if '%choice%'=='2' goto availability_menu if '%choice%'=='3' ( start "\\Dell_BOI_MASS\Change Management\PRE PreCAB Quality Checks\Today\" goto start ) if '%choice%'=='4' goto Exit REM 二级菜单:Availability-Capacity Deck 子选项 :availability_menu cls title [ Lazy Planner - Availability-Capacity Deck] ECHO =========================================================================================== ECHO. ECHO Availability-Capacity Deck Sub Menu ECHO. ECHO =========================================================================================== ECHO. ECHO 1. April 2023 Folder ECHO. ECHO 2. May 2023 Folder ECHO. ECHO 3. Back to Main Menu ECHO. ECHO ************************************** set /p sub_choice= Please enter your sub-choice: REM 二级菜单输入处理 if '%sub_choice%'=='' ( ECHO Error: Invalid input, please try again. pause >nul goto availability_menu ) if '%sub_choice%'=='1' ( start "\\Dell_BOI_MASS\Service Design\Availability\Priyanka\2023\April2023\" goto availability_menu ) if '%sub_choice%'=='2' ( start "\\Dell_BOI_MASS\Service Design\Availability\Priyanka\2023\May2023\" goto availability_menu ) if '%sub_choice%'=='3' ( cls goto start ) REM 二级菜单无效输入处理 ECHO Error: Invalid sub-choice, please try again. pause >nul goto availability_menu :Exit cls ECHO Thank you for using Lazy Planner! pause >nul EXIT /B
关键修改说明:
标签与跳转逻辑:
- 用
:availability_menu定义二级菜单入口,主菜单选项2通过goto availability_menu进入子菜单 - 二级菜单的返回选项(3)通过
goto start回到主菜单
- 用
输入有效性处理:
- 对空输入或无效选择添加了提示,并用
pause >nul让用户确认后重新进入对应菜单 - 主菜单和二级菜单各自独立处理输入错误,避免程序直接退出
- 对空输入或无效选择添加了提示,并用
体验优化:
- 二级菜单修改了窗口标题,方便用户识别当前层级
- 执行完文件夹打开操作后,停留在当前菜单(可根据需求改为自动返回主菜单)
- 退出时添加友好提示
扩展建议:
- 如果需要给其他主菜单选项添加二级选择,只需复制
:availability_menu的逻辑,创建新的标签(比如:wsr_menu)并在主菜单对应选项添加goto跳转即可 - 可以用
choice /c 1234 /m "Welcome! Please enter your choice:"替代set /p,强制用户只能输入指定范围内的数字,减少无效输入(需要注意choice命令的兼容性)
内容的提问来源于stack exchange,提问作者Ashish Chavan
相关产品推荐
相关产品推荐

