Board logo

标题: [其他] 请教精简批处理if命令 [打印本页]

作者: smss    时间: 2019-4-6 17:04     标题: 请教精简批处理if命令

  1. set /p Z=输入对应字符回车:
  2. if not "%Z%"=="" set Z=%Z:~0,2%
  3. if "%Z%"=="0" goto 0
  4. if "%Z%"=="1" goto 1
  5. if "%Z%"=="2" goto 2
  6. if "%Z%"=="3" (set "Aa=视频"&goto 3)
  7. if "%Z%"=="4" (set "Aa=电影"&goto 3)
  8. if "%Z%"=="5" goto 5
  9. if "%Z%"=="6" goto 6
  10. if "%Z%"=="7" goto 7
  11. if "%Z%"=="8" goto 8
  12. if "%Z%"=="9" goto 9
  13. if "%Z%"=="a" goto a
  14. if "%Z%"=="b" goto b
  15. if "%Z%"=="c" goto c
  16. if "%Z%"=="d" goto d
  17. if "%Z%"=="e" goto e
  18. if "%Z%"=="f" goto f
  19. if "%Z%"=="g" goto g
  20. if "%Z%"=="h" goto h
  21. if "%Z%"=="i" goto i
  22. if "%Z%"=="j" goto j
  23. echo 选择无效,请重新输入!
  24. ping 0 -n "1">nul&goto Cho
复制代码
精减写成
set /p Z=输入对应字符回车:
精减成goto %Z%
但输入不存在的跳转时闪退 有没有精减又不闪退的方法
作者: xczxczxcz    时间: 2019-4-6 19:09

参考:顺便回复另一贴
  1. @Echo Off  & CD /d "%~dp0"
  2. :Cho
  3. set /p "Z=输入对应字符回车:" &cls
  4. if "%Z%"=="" (echo 输入字符 & goto Cho)
  5. echo %Z%|findstr /i "^[0-9a-jq]$">nul&& (
  6. if /i "%Z%"=='Q' exit
  7. if %Z%==3 (set "Aa=视频" & goto 3)
  8. if %Z%==4 (set "Aa=电影" & goto 3)
  9. goto %Z%
  10. )||echo 输入错误 & goto Cho
  11. :0
  12. echo 您输入的是 %Z%
  13. pause & goto Cho
  14. :1
  15. echo 您输入的是 %Z%
  16. pause & goto Cho
  17. :2
  18. echo 您输入的是 %Z%
  19. pause & goto Cho
  20. :3
  21. echo 您输入的是 %Z% 视频 电影
  22. pause & goto Cho
  23. :5
  24. echo 您输入的是 %Z%
  25. pause & goto Cho
  26. :6
  27. echo 您输入的是 %Z%
  28. pause & goto Cho
  29. :7
  30. echo 您输入的是 %Z%
  31. pause & goto Cho
  32. :8
  33. echo 您输入的是 %Z%
  34. pause & goto Cho
  35. :9
  36. echo 您输入的是 %Z%
  37. pause & goto Cho
  38. :a
  39. echo 您输入的是 %Z%
  40. pause & goto Cho
  41. :b
  42. echo 您输入的是 %Z%
  43. pause & goto Cho
  44. :c
  45. echo 您输入的是 %Z%
  46. pause & goto Cho
  47. :d
  48. echo 您输入的是 %Z%
  49. pause & goto Cho
  50. :e
  51. echo 您输入的是 %Z%
  52. pause & goto Cho
  53. :f
  54. echo 您输入的是 %Z%
  55. pause & goto Cho
  56. :g
  57. echo 您输入的是 %Z%
  58. pause & goto Cho
  59. :h
  60. echo 您输入的是 %Z%
  61. pause & goto Cho
  62. :i
  63. echo 您输入的是 %Z%
  64. pause & goto Cho
  65. :j
  66. echo 您输入的是 %Z%
  67. pause & goto Cho
复制代码

作者: smss    时间: 2019-4-6 20:57

本帖最后由 smss 于 2019-4-6 21:19 编辑
参考:顺便回复另一贴
xczxczxcz 发表于 2019-4-6 19:09


如果大于9呢 [0-12a-m] 数字不行
作者: xczxczxcz    时间: 2019-4-6 21:21

回复 3# smss

支持 0-99 a-j A-J q/Q为退出。用法自查,findstr /?
  1. @Echo Off
  2. :Cho
  3. set /p "Z=输入对应字符回车:" &cls
  4. if "%Z%"=="" (echo 输入字符 & goto Cho)
  5. echo %Z%|findstr /i "^[0-9a-jq]$ ^[1-9][0-9]$">nul&&(
  6. if /i "%Z%"=="Q" exit
  7. if %Z%==3 (set "Aa=视频"&echo %Z% %Aa% & goto Cho)
  8. if %Z%==4 (set "Aa=电影"&echo %Z% %Aa% & goto Cho)
  9. echo %Z% & goto Cho
  10. )||echo 输入错误 & goto Cho
复制代码

作者: smss    时间: 2019-4-6 21:37

本帖最后由 smss 于 2019-4-6 21:43 编辑

回复 4# xczxczxcz

目前只写了12个 因些想指定0-12范围

echo %Z%|findstr /i "^[0-9a-m]$ ^[1-12][0-12]$">nul&&(
作者: xczxczxcz    时间: 2019-4-6 21:42

"^[0-9a-jq]$ ^[1-9][0-9]$" 改成 "^[0-9a-mq]$ ^1[0-2]$"
作者: smss    时间: 2019-4-6 21:46

本帖最后由 smss 于 2019-4-6 21:52 编辑
"^[0-9a-jq]$ ^[1-9][0-9]$" 改成 "^[0-9a-mq]$ ^1[0-2]$"
xczxczxcz 发表于 2019-4-6 21:42

好的另外多说句 如果要关闭就直接点叉了 为什么要在里面加个Q关闭
作者: xczxczxcz    时间: 2019-4-6 21:57

加个Q 可以不用鼠标啊。只敲键盘就行。不喜欢可以自行删除 q字母和exit行。
作者: whiter    时间: 2019-4-7 12:21

为什么不直接设置宏命令 配置doskey,支持传参数
纯脚本的工具,用goto跳转,感觉还是稍微差了些
作者: whiter    时间: 2019-4-7 12:29

你这个脚本写的话,命令可能比较多,说明提示肯定是需要的,不如单独写一个说明文件, 把命令和注释按不同的行开头区分开
主文件 判断if的时候,用
  1. FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
复制代码
读取一下 , 如果有对应的命令就执行,没有就报错提示
也方便做你那么长的说明文件
作者: smss    时间: 2019-4-7 13:01

你这个脚本写的话,命令可能比较多,说明提示肯定是需要的,不如单独写一个说明文件, 把命令和注释按不同的行开 ...
whiter 发表于 2019-4-7 12:29

因为我太笨了,这脚本主要用来调取JAVA解包打包的.写成EXE 就可以变成和ROM制作工具一样的(他们都内置推广软件的)
作者: whiter    时间: 2019-4-7 13:40

回复 11# smss
噢,多写写就好了,脚本写好 最后用iexpress打包成exe就是了




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2