注册
登录
论坛
搜索
帮助
导航
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
批处理之家
»
BAT求助&讨论
» 关于 batman [原创] 批处理实用技术 有点建议
[新手上路]
批处理新手入门导读
[视频教程]
批处理基础视频教程
[视频教程]
VBS基础视频教程
[批处理精品]
批处理版照片整理器
[批处理精品]
纯批处理备份&还原驱动
[批处理精品]
CMD命令50条不能说的秘密
[在线下载]
第三方命令行工具
[在线帮助]
VBScript / JScript 在线参考
返回列表
发帖
yngwcc
发短消息
加为好友
yngwcc
当前离线
UID
48342
帖子
2
精华
0
积分
15
PB
15
技术
0
捐助
0
阅读权限
5
在线时间
3 小时
注册时间
2012-5-29
最后登录
2012-6-4
列兵
帖子
2
积分
15
技术
0
捐助
0
注册时间
2012-5-29
1
楼
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2012-6-1 17:38
|
只看该作者
[代码合集]
关于 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
这样的话 新手更加好看懂些,这些是本人愚见,有什么不对请大家执教
收藏
分享
lllsoslll
发短消息
加为好友
lllsoslll
当前离线
UID
35795
帖子
97
精华
0
积分
164
PB
146
技术
6
捐助
0
阅读权限
20
在线时间
181 小时
注册时间
2011-3-29
最后登录
2018-9-26
二级士官
帖子
97
积分
164
技术
6
捐助
0
注册时间
2011-3-29
2
楼
发表于 2012-6-1 18:00
|
只看该作者
很好,楼主 热心会员, 值得学习。。。。
SOS --- >> lllsoslll@163.com
TOP
gawk
发短消息
加为好友
gawk
当前离线
UID
42456
帖子
1088
精华
0
积分
5421
PB
5097
技术
98
捐助
30
阅读权限
99
在线时间
239 小时
注册时间
2011-10-9
最后登录
2016-8-6
少将
帖子
1088
积分
5421
技术
98
捐助
30
注册时间
2011-10-9
3
楼
发表于 2012-6-1 18:04
|
只看该作者
好主意,感谢分享。
TOP
返回列表
批处理专区: BAT CMD DOS
BAT求助&讨论
BAT教程&资料
BAT原创&转载
BAT新大陆
BAT转载代码
新手练功
出题挑战
有偿求助
第三方命令行
开源原创工具
iBAT
Take Command
其他脚本区
PowerShell求助&讨论
PowerShell教程&资料
PowerShell原创&转载
VBS求助&讨论
JS / JScript / JavaScript
VBS教程&资料
VBS原创&转载
UNIX/Linux Shell
Python
Perl
网络资源区
电脑技术研讨
精品软件交流
论坛事务区
站务交流
意见反馈
论坛公告
版主申请
交换链接
建站杂谈
活动专区
论坛总版规
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]