首页/系统/Windows 运维速查/choice 交互式选择
CMD 常用命令74 条

choice 交互式选择

给脚本加一个选择题:按单键返回不同 ERRORLEVEL,支持超时默认项,适合安装/维护确认脚本。

Windows 运维速查系统更新于 2026-10-13

choice 交互式选择

choice 给脚本加一道选择题:按指定字符集中的按键返回对应的 ERRORLEVEL,字符在集合中的位置就是返回值,从 1 开始计数,还支持超时后自动选默认项。它适合安装向导、维护确认、危险操作二次确认这类需要人工介入的场景。要记住 if errorlevel 是「大于等于」语义,判断时必须从大到小写。

基本信息

适用平台Windows CMD 与批处理
语法choice /c 字符集 [/n] [/t 秒 /d 默认字符] [/m 提示语]
返回值ERRORLEVEL 从 1 开始,对应字符在集合中的序号
超时必须与默认选项配对使用
常用开关/n 隐藏选项列表

典型使用场景

  • 危险操作之前要求用户明确确认继续或取消
  • 脚本启动时让人选择运行模式,例如生产或测试
  • 无人值守场景用超时默认项保证脚本继续执行
  • 安装脚本里让人选择安装目录或安装的组件
  • 维护脚本确认是否重启、是否继续下一步

常用示例

常用示例
choice /c YNC /m "是否继续? [Y]是 [N]否 [C]取消"
if errorlevel 3 echo 用户取消 & exit /b 1
if errorlevel 2 echo 用户选否 & exit /b 0
if errorlevel 1 echo 用户选是
REM 10 秒无人按键则默认选 N:
choice /c YN /t 10 /d N /m "继续吗?"
REM 隐藏选项列表,只显示自定义提示:
choice /c YN /n /m "确认继续? (Y/N)"

开关与语义

开关或语义说明注意
/c 字符集定义可选按键返回值按顺序从 1 开始
/t 秒 /d 字符超时与默认选项两者必须配对使用
/m 提示语自定义提示文字建议写清每个按键含义
if errorlevel N大于等于语义判断必须从大到小写
if errorlevel 的判断是大于等于:若先判断 errorlevel 1,那么返回 2 或 3 时同样会命中,所以条件顺序必须从大值往小值写,否则后面的分支永远走不到。
在计划任务这类无交互环境里,choice 不设超时就会长期挂起;必须配上 /t 与 /d,或者干脆改成条件判断,避免依赖人工输入。分支处理时把用户的选择记进日志,事后追溯更方便。

易错点

  • 只写 /t 不写 /d:命令直接报错,超时必须有默认选项
  • 无交互环境里使用 choice 且不设超时:脚本长期挂起,任务看起来卡死
  • if errorlevel 从小值开始判断:先命中小值分支,后续分支永远不执行
  • 字符集里放了会被系统吞掉的字符:返回值与预期错位
  • 把带默认项的超时用在交互场景:用户还没看完提示就被自动选择,操作结果不可预期

数据来源与参考

  • Microsoft Learn:choice 命令

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌