中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 花了2个小时才明白的set用法,请大家不要见笑!
作者:
标题: 花了2个小时才明白的set用法,请大家不要见笑! 上一主题 | 下一主题
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『楼 主』:  花了2个小时才明白的set用法,请大家不要见笑!

以下是我的学习心得,希望对还不知道的人有所帮助:

@echo off
set var=zgk.com
echo 变量var的值是:%var%
pause
set b=%var:~0,5%
rem %var:~0,5%:从头开始取前5个赋值给变量
echo 我认为的b=^%%var:^~0,5^%%结果是:zgk.c
echo 变量b的值是:%b%
pause

set c=%var:~1,5%
rem %var:~1,5%:从第2个开始取前5个赋值给变量
echo 我认为的c=^%%var:^~1,5^%%结果是:gk.co
echo 变量c的值是:%c%
pause

set e=%var:~0,-3%
rem %var:~0,-3%:截取最后3个,从头开始取到尾赋值给变量
echo 我认为的e=^%&var:^~0,-3^%%结果是:zgk.
echo 变量e的值是:%e%
pause

set f=%var:~1,-3%
rem %var:~1,-3%:截取最后3个,从第2个开始取到尾赋值给变量
echo 我认为的f=^%%var:^~1,-3^%%结果是:gk.
echo 变量f的值是:%f%
pause

echo 我认为的g=^%%var:^~3^%%结果是:.com
set g=%var:~3%
rem %var:~3%:从第4个开始取到尾赋值给变量
echo 变量g的值是:%g%

pause
set d=%var:~-3%
rem %var:~3%:只取后3个赋值给变量
echo 我认为的^d=^%%var:^~-3^%%结果是:com
echo 变量d的值是:%d%
pause

   此帖被 +2 点积分    点击查看详情   
评分人:【 snowbbbb 分数: +2  时间:2008-3-12 19:04


2008-3-12 17:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

理解变量字符的截取功能
http://www.cn-dos.net/forum/view ... ;highlight=%2Blxmxn

2008-3-12 18:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
snowbbbb
初级用户





积分 118
发帖 42
注册 2006-9-14
状态 离线
『第 3 楼』:  

新手学东西 最好是一个一个命令来教  hat所引用的这篇贴子 用的for命令是我们这样的新手还不会的 我上午看了一上午 http://www.cn-dos.net/forum/view ... ;highlight=%2Blxmxn 得到的结果不如花几分钟看tempuser这样的解说

   此帖被 +3 点积分     点击查看详情   
评分人:【 HAT 分数: +3  时间:2008-3-12 23:07


2008-3-12 19:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
learner0
初级用户





积分 108
发帖 49
注册 2008-2-26
状态 离线
『第 4 楼』:  

学好了截取变量字符 的用法,请参考http://www.cn-dos.net/forum/viewthread.php?tid=26918

2008-3-12 19:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by snowbbbb at 2008-3-12 07:06 PM:
新手学东西 最好是一个一个命令来教  hat所引用的这篇贴子 用的for命令是我们这样的新手还不会的 我上午看了一上午 [url]http://www.cn-dos.net/forum/view[/ur ...

很好 很强大 +分

2008-3-12 23:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
oszero
新手上路





积分 17
发帖 9
注册 2008-1-29
状态 离线
『第 6 楼』:  

谢谢,学习了

2008-3-13 11:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
woo88
初级用户





积分 188
发帖 96
注册 2008-3-11
状态 离线
『第 7 楼』:  

tks

2008-3-15 01:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
313885174
中级用户





积分 206
发帖 100
注册 2007-7-9
状态 离线
『第 8 楼』:  

截取字符还是不怎么熟练...

2008-3-15 02:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dslz666
中级用户





积分 233
发帖 117
注册 2007-11-28
状态 离线
『第 9 楼』:  

好东西。通俗易懂。谢谢楼主。。

2008-3-16 23:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jy02141405
初级用户





积分 97
发帖 34
注册 2007-11-16
状态 离线
『第 10 楼』:  

3楼给的连接看不了了

2008-3-18 00:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 11 楼』:  感谢zw19750516的全面提示



  Quote:
Originally posted by tempuser at 2008-3-12 17:44:
以下是我的学习心得,希望对还不知道的人有所帮助:

@echo off
set var=zgk.com
echo 变量var的值是:%var%
pause
set b=%var:~0,5%
rem %var:~0,5%:从头开始取前5个赋 ...

对zw19750516的全面提示稍加修改,觉得更适合自己的理解:
%var:~a,b%
注意:b不能为零;如a和b都为“负数”,a的绝对值一定要大于b的绝对值。
REM  a为负数时,从变量var后端截取/保留a个字符赋值给新变量
REM  b为负数时,从变量var后端截掉/丢弃b个字符后,剩余部分赋值给新变量
REM  a为正数时,从变量var开头处截掉/丢弃a个字符后,剩余部分赋值给新变量
REM  b为正数时,从变量var开始截取处保留b个字符赋值给新变量

2008-3-18 10:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
star85
初级用户




积分 31
发帖 11
注册 2007-9-10
状态 离线
『第 12 楼』:  

学习



<img src="
2008-3-19 21:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
MASKKID
初级用户





积分 34
发帖 15
注册 2008-5-14
状态 离线
『第 13 楼』:  

实例类的对新手真是太好了
我现在大概能看懂你的东西,慢慢我自己再试试基本山就差不多掌握一点了~~
谢谢啊

2008-5-27 13:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
easonL
初级用户

E生迅徒


积分 118
发帖 56
注册 2008-5-22
来自 南京
状态 离线
『第 14 楼』:  很亲切,呵呵

突然看见这个帖子很亲切,因为前两天自己也做了这方面的笔记,呵呵
贴出来,大家分享下!
可能感觉"很傻很天真",但是我们是新手,最不怕的是丢人!哈哈哈

@echo off
set var=liangguozhu
echo var=%var%
pause

rem %var:~a,b% 对于参数a,b的规律总结:
rem 注意:b不能为零;如a和b都为“负数”,a的绝对值一定要大于b的绝对值。
rem ==================================================================

rem ①a<0 b<0
rem 从变量var中a位置开始截取/保留(b-a)个字符赋值给新变量
set h=%var:~-3,-1%
echo ^%%var:^~-3,-1^%%:zh
echo %h%
pause


rem ②a<0 b>0
rem 从变量var中a位置开始截取/保留b个字符赋值给新变量
rem 注意:如果b>a的绝对值,也就是说从a位置到字符串最后的字符总数<b,这时候将a位置到字符串最后的字符赋值给新变量

set h=%var:~-4,3%
echo ^%%var:^~-4,3^%%:ozh
echo %h%
pause

set h=%var:~-4,5%
echo ^%%var:^~-4,5^%%:ozhu
echo %h%
pause


rem ③a>0, b<0
rem 从变量var中a位置开始往前截掉/丢弃至位置b的字符后,剩余部分赋值给新变量
set i=%var:~3,-1%
echo ^%%var:^~3,-1^%%:ngguozh
echo %i%
pause


rem ④a>0, b>0
rem 从变量var中a位置开始往后截取/保留b个字符赋值给新变量
set j=%var:~1,3%
echo ^%%var:^~1,3^%%:ian
echo %j%
pause

rem ⑤a=0, b>0
rem 从变量var开头往后截取/保留b个字符赋值给新变量
set k=%var:~0,3%
echo ^%%var:^~0,3^%%:lia
echo %k%
pause

rem ⑥a=0, b<0
rem 从变量var最后往前截掉/丢弃b个字符后,剩余部分赋值给新变量
set k=%var:~0,-3%
echo ^%%var:^~0,-3^%%:liangguo
echo %k%
pause


rem ⑦a没有, b<0
rem 截取/保留最后的|b|个字符
set l=%var:~-3%
echo ^%%var:^~-3^%%:zhu
echo %l%
pause


rem ⑧a没有, b>0
rem 截掉/丢弃前面的b个字符后,剩余部分赋值给新变量
set m=%var:~3%
echo ^%%var:^~3^%%:ngguozhu
echo %m%
pause



無求一生光輝 唯朢鬥志不會斷
2008-5-27 14:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yesmao
初级用户





积分 35
发帖 18
注册 2007-1-14
状态 离线
『第 15 楼』:  

好好,我是新手,学习了

2008-5-27 16:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: