[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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。。。(可能有二三十个


非常谢谢!

本帖最后由 qixiaobin0715 于 2020-11-7 15:53 编辑

回复 18# maghreb

我想你是指不能输入1到9这九个数字吧,可能是你抄代码时漏下了“*”,看清楚了是[1-9][0-9]*。我这里测试没问题。
另外也可以将判断写成一行:
  1. :a
  2. set /p "ch=请输入你的选择:"
  3. echo %ch%|findstr /v /be "[1-9][0-9]*" >nul&&echo 输入有误重输&& goto :a||if %ch% gtr 100 (echo 输入有误重输&& goto :a) else (goto :b)
复制代码

TOP

回复 11# yhcfsr

set /p select=输入你的选择:
if "%select%"=="0" goto :mainmenu
echo %select%|findstr /r "[^0-9]"&&goto :mainmenu||if %select% gtr 50 goto :mainmenu
goto :install

刚才试了一下,qixiaobin0715兄的执行有效,但不能输入个位,我综合两位的意见, 修改后可以正确达到要求,感谢两位大神

TOP

测试当然是没问题,可能是我表达有问题,输入数字是从1开始的,而不是0.

TOP

感谢两位大神的思路,均解决了我的问题再次感谢

TOP

回复 14# qixiaobin0715


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

TOP

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

TOP

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

回复 12# qixiaobin0715


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

TOP

回复 8# yhcfsr

输入0呢?

TOP

回复 8# yhcfsr


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

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

回复 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

更新

本帖最后由 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

回复 5# Batcher


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

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

TOP

回复 4# qixiaobin0715

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

TOP

返回列表