Board logo

标题: [原创] 批处理命令set截取字符练习工具 [打印本页]

作者: batman    时间: 2008-6-22 09:37     标题: 批处理命令set截取字符练习工具

&&其实,我在批处理实用技术中就发个这个工具的代码,只是那个考虑到原贴子的内容比较多很多人可能不会注意到,加上本人认为这个工具对新手理解和熟悉截取字符命令来说还是大有帮助的,所以才又单发了本贴,希望各位新人能利用本工具迅速掌握重要而实用的截取字符命令:
  1. @echo off&color 1f&mode con cols=90 lines=12
  2. title 截取字符练习工具 by bat-zw19750516
  3. set tu=★★★★★★★★★★★★★★★■■■■■■■■■■■■■■■
  4. cls&echo.&echo  原始图案为:%tu%
  5. echo.&echo  注意前面有15个五角星后面有15个方块,等下截取后记得数一下。
  6. echo.&echo  命令形式为:%%tu:~2,1%%,其中的2为第一个参数可负可正可为零,1为第二个参数可负可正不为零。
  7. echo.&echo  为了方便重复练习没有设置退出,要退出请直接关闭窗口。
  8. echo.&echo  请按任意键开始练习。&pause>nul
  9. :begin
  10. set a=&set b=&set "c="
  11. cls&echo.&set /p a= 请输入第一个参数(应为小于30的整数):
  12. echo %a:-=%|findstr "[^0-9]"&&goto wrong
  13. if "%a%" equ "" goto wrong
  14. if %a% geq 30 goto wrong
  15. cls&echo.&set /p b= 请输入第二个参数(应为大于-30并不为零的整数):
  16. echo %b:-=%|findstr "[^0-9]"&&goto wrong
  17. if "%b%" equ "" goto wrong
  18. if %b% equ 0 goto wrong
  19. if %b% lss -30 goto wrong
  20. set /a c=30-a+b
  21. if %a% lss 0 if %b% lss 0 if %a% geq %b% goto wrong
  22. if %a% gtr 0 if %b% lss 0 if %c% leq 0 goto wrong
  23. cls&echo.&echo  原始图案为: %tu%
  24. echo.&echo  你输入的截取命令是: %%tu:~%a%,%b%%%
  25. echo.&call,echo  截取到的图案是 :%%tu:~%a%,%b%%%
  26. echo.&echo  请按任意键再次练习。&pause>nul&goto begin
  27. :wrong
  28. cls&echo.&echo  输入不合要求,请正确输入。&ping /n 2 127.1 >nul&goto begin
复制代码

作者: januapr    时间: 2009-8-9 22:52

batman这个例子还是不错的,有利于加深我们对字符截取的理解,
不这就是那星星和方块让我数得头都晕了,55555!
作者: januapr    时间: 2009-8-9 22:55

下面我把楼主老大的例子改了一下,这回应该不用数得头晕了,嘻嘻
  1. @echo off&color a&mode con cols=90 lines=12
  2. title 截取字符练习工具 by bat-zw19750516
  3. set var=1234567890一二三四五六七八九零
  4. cls&echo.&echo  原始图案为:%var%
  5. echo.&echo  注意前面有10个阿拉伯数字后面有10个语文数字,等下截取后记得看下。
  6. echo.&echo  命令形式为:%%var:~m,n%%,其中的m为第一个参数可负可正可为零,n为第二个参数可负可正不为零。
  7. echo.&echo  为了方便重复练习没有设置退出,要退出请直接关闭窗口。
  8. echo.&echo  请按任意键开始练习。&pause>nul
  9. :begin
  10. set a=&set b=&set "c="
  11. cls&echo.&set /p a= 请输入第一个参数(应为小于20的整数):
  12. echo %a:-=%|findstr "[^0-9]"&&goto wrong
  13. if "%a%" equ "" goto wrong
  14. if %a% geq 20 goto wrong
  15. cls&echo.&set /p b= 请输入第二个参数(应为大于-20并不为零的整数):
  16. echo %b:-=%|findstr "[^0-9]"&&goto wrong
  17. if "%b%" equ "" goto wrong
  18. if %b% equ 0 goto wrong
  19. if %b% lss -20 goto wrong
  20. set /a c=20-a+b
  21. if %a% lss 0 if %b% lss 0 if %a% geq %b% goto wrong
  22. if %a% gtr 0 if %b% lss 0 if %c% leq 0 goto wrong
  23. cls&echo.&echo  原始图案为: %var%
  24. echo.&echo  你输入的截取命令是: %%var:~%a%,%b%%%
  25. echo.&call,echo  截取到的图案是 :%%var:~%a%,%b%%%
  26. echo.&echo  请按任意键再次练习。&pause>nul&goto begin
  27. :wrong
  28. cls&echo.&echo  输入不合要求,请正确输入。&ping /n 2 127.1 >nul&goto begin
复制代码

作者: batman    时间: 2009-8-10 01:35

呵呵,这么老的贴子也被你翻出来了。。。
作者: gigiqb    时间: 2009-8-10 11:25

我顶啊不错的帖子。。
作者: Hello123World    时间: 2011-4-29 10:46

batcher的链接给力
作者: Hello123World    时间: 2011-4-29 10:52

batman的代码有严重的问题。
1,3
3,3
都没有区别。
没有januapr 的好。
作者: jsbba    时间: 2011-5-5 08:28

学习工具都这么给力,管理员太有才了啊,太牛逼了
作者: zfkzp    时间: 2011-6-23 15:39

试了一下,第二个数应该这样提示:cls&echo.&set /p b= 请输入第二个参数(应为大于-11并不为零的整数)
我试过很多次,基本到-12就开始报错了。-11还可以的。
作者: xx2131232    时间: 2013-2-3 21:10

嗯嗯,set截取终于会一点点了/
作者: wangx    时间: 2013-9-16 14:50

echo %a:-=%|findstr "[^0-9]"&&goto wrong这一句怎么理解
330330 发表于 2011-8-18 12:23

这句话把负号替换掉,然后判断有没有非数字,有的话就要求重新输入




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