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

[代码合集] 关于 batman [原创] 批处理实用技术 有点建议

本帖最后由 yngwcc 于 2012-6-1 18:22 编辑

http://bbs.bathome.net/thread-1145-1-1.html
这个帖子的七、[谈谈截取字符命令] 我觉得应该改进一下
%a:~b,c%
假设a的字符数是n
当n>b>=0时候 就是 从a字符的b+1位置开始获取后面的所有字符
当b<0时候 就是 从a的最后1个字符开始往头获取b个字符
当c>0 的时候 就从a的第1个字符开始获取c个字符
当-n<c<0 的时候 就去掉a字符中的最后c个字符剩下的字符
当b和c同时出现的时候
1.b<0 c<0 |b|>|c| 比如 a字符有12个  b=-4  c=-5 的话 那按上面的意思是b=-4就是取a字符的9-12位,
c=-5 就是取b获得字符的去掉后5位,那就没有字符可以取了
无论b为什么数时候 c不能为0
2.当b>0 c<0 时候  |b|+|c|< n  (a的字符数) b=7 比如 a字符有12个 c=-8 的话 b=7 就是取a的8-12位 c=-8的就是取b获得字符的去掉后8位,那就没有字符可以取了

我觉得 为新手写了个字符截取练习工具,代码应该修改如下:
@echo off&color 1f&mode con cols=90 lines=16
:begin
set tu=★★★★★★★★★★★★★★★■■■■■■■■■■■■■■■
cls&echo.&echo  原始图案为:%tu%
echo.&echo  注意前面有15个五角星后面有15个方块,等下截取后记得数一下。
echo.&echo  命令形式为:%%tu:~2,1%%,其中的2为第一个参数可负可正可为零,1为第二个参数可负可正不为零。
echo.&echo  参数2大于0 参数1小于0的时候,两个参数的绝对值要小于30。
echo.&echo  两个参数都小于0的时候,第一个参数的要比第二个参数小。
echo.&echo  为了方便重复练习没有设置退出,要退出请直接关闭窗口。
echo.&echo  请按任意键开始练习。&pause>nul
set a=&set b=&set "c="
cls&echo.&set /p a= 请输入第一个参数(应为小于30的整数):
echo %a:-=%|findstr "[^0-9]"&&goto wrong
if "%a%" equ "" goto wrong
if %a% geq 30 goto wrong
cls&echo.&set /p b= 请输入第二个参数(应为大于-30并不为零的整数):
echo %b:-=%|findstr "[^0-9]"&&goto wrong
if "%b%" equ "" goto wrong
if %b% equ 0 goto wrong
if %b% lss -30 goto wrong
set /a c=30-a+b
if %a% gtr 0 if %b% lss 0 if %c% leq 0 goto wrong
cls&echo.&echo  原始图案为:%tu%
echo.&echo  你输入第一个参数的截取命令是: %%tu:~%a%%%
echo.&call,echo  截取到的图案是 :%%tu:~%a%%%
echo.&echo  你输入第二个参数的截取命令是: %%tu:~,%b%%%
echo.&call,echo  截取到的图案是 :%%tu:~,%b%%%
echo.&echo  你输入两个参数一起的截取命令是: %%tu:~%a%,%b%%%
echo.&call,echo  截取到的图案是 :%%tu:~%a%,%b%%%
echo.&echo  请按任意键再次练习。&pause>nul&goto begin
:wrong
cls&echo.&echo  输入不合要求,请正确输入。&ping /n 2 127.1 >nul&goto begin

这样的话 新手更加好看懂些,这些是本人愚见,有什么不对请大家执教

很好,楼主 热心会员, 值得学习。。。。
SOS --- >> lllsoslll@163.com

TOP

好主意,感谢分享。

TOP

返回列表