找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 42906|回复: 11

[原创] 批处理命令set截取字符练习工具

[复制链接]
发表于 2008-6-22 09:37:32 | 显示全部楼层 |阅读模式
&&其实,我在批处理实用技术中就发个这个工具的代码,只是那个考虑到原贴子的内容比较多很多人可能不会注意到,加上本人认为这个工具对新手理解和熟悉截取字符命令来说还是大有帮助的,所以才又单发了本贴,希望各位新人能利用本工具迅速掌握重要而实用的截取字符命令:
  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
复制代码
发表于 2009-8-9 22:52:45 | 显示全部楼层
batman这个例子还是不错的,有利于加深我们对字符截取的理解,
不这就是那星星和方块让我数得头都晕了,55555!
发表于 2009-8-9 22:55:52 | 显示全部楼层
下面我把楼主老大的例子改了一下,这回应该不用数得头晕了,嘻嘻
  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
复制代码
 楼主| 发表于 2009-8-10 01:35:33 | 显示全部楼层
呵呵,这么老的贴子也被你翻出来了。。。
发表于 2009-8-10 11:25:24 | 显示全部楼层
我顶啊不错的帖子。。
发表于 2011-4-29 10:46:16 | 显示全部楼层
batcher的链接给力
发表于 2011-4-29 10:52:56 | 显示全部楼层
batman的代码有严重的问题。
1,3
3,3
都没有区别。
没有januapr 的好。
发表于 2011-5-5 08:28:02 | 显示全部楼层
学习工具都这么给力,管理员太有才了啊,太牛逼了
发表于 2011-6-23 15:39:11 | 显示全部楼层
试了一下,第二个数应该这样提示:cls&echo.&set /p b= 请输入第二个参数(应为大于-11并不为零的整数)
我试过很多次,基本到-12就开始报错了。-11还可以的。
发表于 2013-2-3 21:10:33 | 显示全部楼层
嗯嗯,set截取终于会一点点了/
发表于 2013-9-16 14:50:18 | 显示全部楼层
echo %a:-=%|findstr "[^0-9]"&&goto wrong这一句怎么理解
330330 发表于 2011-8-18 12:23

这句话把负号替换掉,然后判断有没有非数字,有的话就要求重新输入
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:06 , Processed in 0.019716 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表