![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-08 18:03 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 花了2个小时才明白的set用法,请大家不要见笑! |
| 可打印版本 1,142 / 14 |
| 第1楼 tempuser | 发表于 2008-03-12 17:44 |
| 高级用户 发帖 261 积分 547 | |
|
花了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楼 HAT | 发表于 2008-03-12 18:12 |
| 版主 发帖 5,017 积分 9,023 | |
| 第3楼 snowbbbb | 发表于 2008-03-12 19:06 |
| 初级用户 发帖 42 积分 118 | |
|
新手学东西 最好是一个一个命令来教 hat所引用的这篇贴子 用的for命令是我们这样的新手还不会的 我上午看了一上午 http://www.cn-dos.net/forum/view ... ;highlight=%2Blxmxn 得到的结果不如花几分钟看tempuser这样的解说
|
|
| 第4楼 learner0 | 发表于 2008-03-12 19:21 |
| 初级用户 发帖 49 积分 108 | |
|
学好了截取变量字符 的用法,请参考http://www.cn-dos.net/forum/viewthread.php?tid=26918
|
|
| 第5楼 HAT | 发表于 2008-03-12 23:07 |
| 版主 发帖 5,017 积分 9,023 | |
Originally posted by snowbbbb at 2008-3-12 07:06 PM: |
|
| 第6楼 oszero | 发表于 2008-03-13 11:53 |
| 新手上路 发帖 9 积分 17 | |
|
谢谢,学习了
|
|
| 第7楼 woo88 | 发表于 2008-03-15 01:26 |
| 初级用户 发帖 96 积分 188 | |
|
tks
|
|
| 第8楼 313885174 | 发表于 2008-03-15 02:48 |
| 中级用户 发帖 100 积分 206 | |
|
截取字符还是不怎么熟练...
|
|
| 第9楼 dslz666 | 发表于 2008-03-16 23:30 |
| 中级用户 发帖 117 积分 233 | |
|
好东西。通俗易懂。谢谢楼主。。
|
|
| 第10楼 jy02141405 | 发表于 2008-03-18 00:09 |
| 初级用户 发帖 34 积分 97 | |
|
3楼给的连接看不了了
|
|
| 第11楼 tempuser | 发表于 2008-03-18 10:41 |
| 高级用户 发帖 261 积分 547 | |
感谢zw19750516的全面提示Originally posted by tempuser at 2008-3-12 17:44: 对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个字符赋值给新变量 |
|
| 第12楼 star85 | 发表于 2008-03-19 21:04 |
| 初级用户 发帖 11 积分 31 | |
|
学习
|
|
| 第13楼 MASKKID | 发表于 2008-05-27 13:16 |
| 初级用户 发帖 15 积分 34 | |
|
实例类的对新手真是太好了
我现在大概能看懂你的东西,慢慢我自己再试试基本山就差不多掌握一点了~~ 谢谢啊 |
|
| 第14楼 easonL | 发表于 2008-05-27 14:52 |
| 初级用户 发帖 56 积分 118 来自 南京 | |
|
很亲切,呵呵 突然看见这个帖子很亲切,因为前两天自己也做了这方面的笔记,呵呵
贴出来,大家分享下! 可能感觉"很傻很天真",但是我们是新手,最不怕的是丢人!哈哈哈 @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 |
|
| 第15楼 yesmao | 发表于 2008-05-27 16:19 |
| 初级用户 发帖 18 积分 35 | |
|
好好,我是新手,学习了
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |