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

如何在批处理对话框中多选执行多个菜单选项?

批处理脚本实现多选批量执行功能

现有以下仅支持单选的批处理配置器,用于执行对应文件夹的删除脚本:

@echo off
chcp 1251 >nul
:begin
echo  [1] Folder 1  [3] Folder 3
echo  [2] Folder 2  [4] Folder 4
set /P op=Enter the number: 
if "%op%"=="1" goto op1
if "%op%"=="2" goto op2
if "%op%"=="3" goto op3
if "%op%"=="4" goto op4
:op1
cls
call "Delete_Folder1.bat" >nul
echo Done
timeout /t 2 >nul
cls
goto begin
:op2
cls
call "Delete_Folder2.bat" >nul
echo Done
timeout /t 2 >nul
goto begin
:op3
cls
call "Delete_Folder3.bat" >nul
echo Done
timeout /t 2 >nul
cls
goto begin
:op4
cls
call "Delete_Folder4.bat" >nul
echo Done
timeout /t 2 >nul
cls
goto begin

要实现多选功能(支持输入1,3、234、1 2这类格式的多选指令),可以通过遍历用户输入的每个有效选项来批量执行对应的脚本,修改后的代码如下:

@echo off
chcp 1251 >nul
setlocal enabledelayedexpansion

:begin
cls
echo  [1] Folder 1  [3] Folder 3
echo  [2] Folder 2  [4] Folder 4
echo  支持多选,格式示例:1,3 或 234 或 1 2
set "op="
set /P op=请输入要执行的选项编号: 

:: 遍历输入中的每个有效选项
for %%c in (!op!) do (
    :: 处理逗号分隔的情况,替换逗号为空格后重新遍历
    if "%%c" neq "" (
        set "item=%%c"
        set "item=!item:,= !"
        for %%i in (!item!) do (
            call :execute_script %%i
        )
    )
)

echo 所有选中操作已完成
timeout /t 3 >nul
goto begin

:: 执行对应删除脚本的子过程
:execute_script
if "%1"=="1" call "Delete_Folder1.bat" >nul && echo Folder 1 删除完成
if "%1"=="2" call "Delete_Folder2.bat" >nul && echo Folder 2 删除完成
if "%1"=="3" call "Delete_Folder3.bat" >nul && echo Folder 3 删除完成
if "%1"=="4" call "Delete_Folder4.bat" >nul && echo Folder 4 删除完成
goto :eof

关键改动说明

  • 启用setlocal enabledelayedexpansion:支持在循环中动态修改变量值,处理输入中的逗号分隔符。
  • 双层遍历逻辑:先拆分用户输入的整体内容,再将逗号替换为空格后遍历每个选项编号,兼容多种输入格式(空格、逗号、连续数字)。
  • 子过程execute_script:把执行脚本的逻辑抽离,避免重复代码,每个选项执行后给出明确提示。
  • 简化流程:执行完所有选中操作后统一提示完成,再返回初始菜单,不用每次执行完单个操作就清屏返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:16:27