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

TOP

看了楼上的讲解,结合自己的理解,把截取字符归纳为4条:
1、set var=%str: ~n, m%    从n+1 开始,从左至右连续m个
2、set var=%str: ~n, -m%  从n+1 开始,去掉最后m个
3、set var=%str: ~-n, m%   截取最后n个,从左至右连续m个
4、set var=%str: ~-n, -m%  截取最后n个,去掉最后m个

TOP

回复 1楼 的帖子

十分感谢楼主提供这么好的学习帖子.............我阅读完发现小错误一处.不知道是楼主故意给我们新手思考的还是笔误.
② 提取2: set var=%str:~1,1% 或 set var=%str:~1,-8% 或 set var=%str:~-8,1%
中的set var=%str:~1,-8%应该是
set var=%str:~1,-7%吧...楼主看看
1

评分人数

    • namejm: 感谢指出错误,谢谢。PB + 2

TOP

看了一下,谢谢了,,

TOP

非常感谢楼主的讲解,真是受益匪浅啊

TOP

原创:set截取字符--新的简易解释

看过尘土飞扬的《set截取字符详解》、youxi01的《变量字符截取 点点通》,终于明白了Set如何截取字符的,感谢他们!
但是,我想出了更容易理解的解释,本着百花齐放、勇于探新的精神,呵呵,虽说是菜鸟,也不妨讲出来,使更多菜鸟能够快速地理解和掌握。言归正传,开始了。
set var=1234567890
echo %var:~4,-2%     
结果是  var=5678
上例中,截取字符,是按位操作的,下面就以比较复杂的“截取中间字符串”为例,说明一下怎样快速理解并掌握字符的截取方法。

先看下面的新解释:
~:删除前几位;(删前)
~-:保留后几位;(保后)
如果一次操作的结果,无法到达目的,需要在第一次操作的结果上,再进行二次操作:
,:保留前几位;(保前)
,-:删除后几位;(删后)

例如:set var=1234567890
%var:~4%           ~4删除前4位,即var=567890;
%var:~-6%         ~-6保留后6位,即var=567890;
%var:~4,-2%      ~4删除前4位,即var=567890,再由“,-2”删除后2位,即var=5678;
%var:~-6,4%      ~-6保留后6位,即var=567890,再由“,4”保留前4位,即var=5678;
%var:~4,4%        ~4删除前4位,即var=567890,再由“,4”保留前4位,即var=5678;
%var:~-6,-2%     ~-6保留后6位,即var=567890,再由“,-2”删除后2位,即var=5678;
通过仔细研究这6个例子,你可以很容易的理解set截取字符的方法,加以简单练习,就可以很快的掌握了。
1

评分人数

TOP

set str=1 2 3 4 5 .....98 99 100
怎么样得到奇数项??

TOP

  感谢你指出我的错误,正确的代码应该是 set var=%str:~1,-5%,我写教程的时候多抛弃了一位了,已经改正,谢谢。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

 ⑤ 提取234:set var=%str:~1,3% 或 set var=%str:~1,-6% 或 set var=%str:~-8,3%
?????结果好像是只能得到23吧 我是新手 请老鸟们多多指教啊
1

评分人数

    • namejm: 呵呵,你很细心,谢谢你的指正。PB + 2

TOP

又学到东西了

TOP

回复 12楼 的帖子

建议把顶楼的教程多看几遍,自己多写代码练习一下。
  1. @echo off
  2. set str=123456789
  3. set var1=%str:~0,1%
  4. set var3=%str:~2,1%
  5. set var5=%str:~4,1%
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

一个字.好

老师说过帮了你的人,要对他说谢谢.我是听话的孩子哦.

TOP

原来就和数组计数一样,[0]     [1]     [2]   共3个元素                           
                                              |        |         |
                                           1st      2nd    3rd

TOP

又上了一课
看后受益者留名~~~

TOP

我写的……

help的解释,我是很难理解了(现在还勉强理解) 所以后来采用了另一种方式理解:

~代表省略, 后面的那个数字代表省略后,剩下的字符串被保留的个数。若为负则需计算。
不管是省略还是保留,指的都是前面的。
---------规律-----------%a:~n,m% 省略前n个,保留剩下的前m个
---------规律-----------%a:~-n,-m% 省略前 总数-n 个,保留剩下的前 总数-m 个
例子:set a=123456789 共9个字符
echo,%a:~0,5%  (前面不省略)保留前 5个
echo,%a:~0,-5% (前面不省略)保留前 9-5=4个 (而不是后5个。)
echo,%a:~5%  省略前5个,剩下的保留
echo,%a:~-5% 省略前9-5=4个,剩下的保留
echo,%a:~-3,-2% 省略前9-3=6个(剩3个:789),剩下的再保留前3-2=1个
        结果显示7
_____________________________________________________________________
(我个人)了解这里的规律部分以后,写批处理的时候是不用想太多的,很快就知道要如何配置
而用help的解释,我总是要理解很久。
举一些例子吧,echo,%time:~-2% 可以显示时间的最后两位,很方便吧,一想就知道
“省去前面的 总数-2 个,剩下的是最后两个”

我个人是在写特效的时候经常会很充分利用这些性质。

TOP

返回列表