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

[原创] 批处理命令set截取字符详解

[复制链接]
发表于 2009-1-3 15:00:47 | 显示全部楼层

一个字.好

老师说过帮了你的人,要对他说谢谢.我是听话的孩子哦.
发表于 2009-1-3 19:45:09 | 显示全部楼层

回复 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%
复制代码
发表于 2009-3-25 16:54:20 | 显示全部楼层
又学到东西了
发表于 2009-4-6 11:25:11 | 显示全部楼层
 ⑤ 提取234:set var=%str:~1,3% 或 set var=%str:~1,-6% 或 set var=%str:~-8,3%
?????结果好像是只能得到23吧 我是新手 请老鸟们多多指教啊

评分

参与人数 1PB +2 收起 理由
namejm + 2 呵呵,你很细心,谢谢你的指正。

查看全部评分

 楼主| 发表于 2009-4-6 13:43:27 | 显示全部楼层
  感谢你指出我的错误,正确的代码应该是 set var=%str:~1,-5%,我写教程的时候多抛弃了一位了,已经改正,谢谢。
发表于 2009-4-6 22:44:28 | 显示全部楼层
set str=1 2 3 4 5 .....98 99 100
怎么样得到奇数项??
发表于 2009-4-7 17:10:00 | 显示全部楼层

原创: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截取字符的方法,加以简单练习,就可以很快的掌握了。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢分享

查看全部评分

发表于 2009-4-8 09:07:18 | 显示全部楼层
非常感谢楼主的讲解,真是受益匪浅啊
发表于 2009-4-16 16:19:49 | 显示全部楼层
看了一下,谢谢了,,
发表于 2009-4-20 17:31:23 | 显示全部楼层

回复 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%吧...楼主看看

评分

参与人数 1PB +2 收起 理由
namejm + 2 感谢指出错误,谢谢。

查看全部评分

发表于 2009-4-27 19:27:44 | 显示全部楼层
看了楼上的讲解,结合自己的理解,把截取字符归纳为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个
发表于 2009-4-29 09:46:07 | 显示全部楼层
好东西学习再学习
发表于 2009-5-5 11:11:58 | 显示全部楼层
讲得真是太祥细了,谢谢
发表于 2009-5-8 13:20:35 | 显示全部楼层
哦,明白了
(1),偏移量前的+,-,表示方向,,向左或右,
      长度前的+,-,+表示保留,-表示去掉,
set var=1,2,3,4,5,6,7,8,9
(2)如果偏移量前是+,那么它的第一个元素的下标序列号为0....(下标序列号最大是8)
    而 如果偏移量前是-,那么也就是从右向左开始,它的倒数第一个是-9,而不是-8.


强!!!!

[ 本帖最后由 xmaoh234 于 2009-5-8 13:31 编辑 ]
发表于 2009-7-25 20:17:46 | 显示全部楼层
学习了,感谢LZ的详细讲解让新手也能看懂!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:56 , Processed in 0.024304 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表