[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] (已解决)批处理如何获取choice用户输入的数字?

本帖最后由 maghreb 于 2020-11-15 17:20 编辑

背景:用户输入进入同一跳转进行安装(或其他操作),那么需要根据用户输入(只能输入要求的如/c:123456789。。。等整数字)的变量,对跳转后同一标签内的安装内容按此变量进行调整以满足不同安装要求,这样可以省很多代码(否则要重复很多标签代码进行安装),如下:
choice /c:123456789 /n /m "输入你的选择 :"
。。。
if errorlevel 4 goto :install
if errorlevel 3 goto install
if errorlevel 2 goto :install
if errorlevel 1 goto :install

请教:1、如何获取choice用户输入的数字变量?
         2、数字9之后该如何表达?如10、11、12。。。(可能有二三十个


非常谢谢!

  1. set /p "ch=请输入你的选择:"
  2. if "%ch%"=="1" goto :install
  3. if "%ch%"=="2" goto :install
  4. .......
  5. if "%ch%"=="100" goto :install
复制代码
QQ 33892006

TOP

这个可以,但是如何把下面100行,简化成一行,这是难点

TOP

回复 3# maghreb
  1. set /p "ch=请输入你的选择:"
  2. if %ch% geq 1 if %ch% leq 100 goto :install
复制代码

TOP

回复 3# maghreb


    请说一下真实的需求吧,不要举一些没有代表性的例子。既然要写成一行不管输入啥都是 goto :install 那么为啥还要做这个判断呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# qixiaobin0715

这样容易输入小数,会导致安装错误

TOP

回复 5# Batcher


    就是我要做一个提取工具,按我做的列表文件进行提取,列表文件可以是123456。。。100。标签里的提取代码是一样的,可以用变量,所以需要按输入的多少数字(必须是整数)来获取这个变量,而去按那个列表文件进行执行提取

如果不是整数,可以写成
:main
set /p input=请输入1至100的数字:
if %input% GTR 1 ( if %input% LSS 100  goto :install )
goto main
::install

TOP

更新

本帖最后由 yhcfsr 于 2020-11-4 20:04 编辑
  1. @echo off
  2. :main
  3. set /p "ch=请输入你的选择:"
  4. echo;%ch%|findstr /r "[^0-9]"&&echo;输出错误&&goto :main||if %ch% gtr 30 echo;输出错误&&goto :main
  5. goto :install%ch%
  6. pause&&exit
  7. :install0 //这是第0个分支
  8. echo;%ch%
  9. pause
  10. exit /b
  11. :install1 //这是第1个分支
  12. echo;%ch%
  13. pause
  14. exit /b
  15. :install2 //这是第2个分支
  16. echo;%ch%
  17. pause
  18. exit /b
  19. .....
  20. :install30 //这是第30个分支
  21. echo;%ch%
  22. pause
  23. exit /b
复制代码
1

评分人数

QQ 33892006

TOP

回复 7# maghreb


    可否举例说明一下7楼这段代码跟你想实现的功能有何差异?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 qixiaobin0715 于 2020-11-4 19:31 编辑

回复 6# maghreb

用findstr判断一下:
  1. :a
  2. set /p "ch=请输入你的选择:"
  3. echo %ch%|findstr /be "[1-9][0-9]*" >nul ||echo 你的输入有误,请重新输入&& goto :a
  4. if %ch% leq 100 (goto :install) else (echo 你的输入有误,请重新输入&& goto :a)
复制代码
1

评分人数

TOP

回复 8# yhcfsr


   不能再简单了,否则你就得一个个if的写
QQ 33892006

TOP

回复 8# yhcfsr

输入0呢?

TOP

本帖最后由 yhcfsr 于 2020-11-4 20:07 编辑

回复 12# qixiaobin0715


    看8楼更新,当学会举一反三
QQ 33892006

TOP

我是说按楼主的要求,0是非法的

TOP

回复 14# qixiaobin0715


    那就不清楚了,WIN10测试没问题
QQ 33892006

TOP

返回列表