- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
批处理命令set截取字符详解
批处理命令 set 截取字符详解
在批处理中,set 的功能有点繁杂:设置变量、显示环境变量的名及值、做算术运算、等待
用户的输入、字符串截取、替换字符串,是我们常用的命令之一。
在字符串截取方面,新手因为没能注意到偏移量的问题,很容易提取到错误的字符串,
因此,特开此帖,详细解释 set 截取字符的用法。
我们先来看一个例子:
set str=123456789
现在,我需要提取变量 str 中的第一个字符,那么,该怎么写命令呢?
set var=%str:~1,1%?我想,这很可能是很多粗懂 set 用法的新手们的第一反应,
实际上,这条语句提取到的是字符 2 ,并不是我们想要的1 ,也就是说,set
var=%str:~1,1% 提取到的是字符串第二位上的字符,而不是第一位上的,这是什么原
因呢?
原来,set 命令从左到右做字符截取的时候,是以整个字符串的第一个字符为起点来计
算要截取字符的偏移量的,也就是说,截取字符的时候,set 会计算提取后字符串的第一个
字符相对于整个字符串第一个字符偏移了多少字符的长度。请注意,set 是按偏移量而不是
字符的绝对位置来提取字符的,这一点非常重要。只要牢记这一点,大家在截取字符的时候,
将会不再在这个问题上犯错。
现在,我们可以把截取字符的命令用一条语句模式来表示,那就是:set var=%str:~
偏移量,长度%。
我们来详细解读这条语句模式的含义:
首先,我们需要把要操作的字符串赋予一个变量,在这条语句中,是把字符串赋予了变
量 str ;然后,我们需要确定一下我们想提取的字符串是哪一部分,比如说要提取字符串
第 2 个字符及其之后的 3 个字符,或是提取字符串第 5 个字符及其之后的 4 个字符……,
最后,计算偏移量及长度,比如要提取字符串第 2 个字符及其之后的 3 个字符,那么,也
就是提取相对于第一个字符偏移量为 1、提取后的字符串长度为 4 的字符串,写成语句就是:
set var=%str:~1,4%。
到目前为止,我们只谈到了很简单的截取操作,如果碰到比较复杂的提取需求,比如:
提取第 2 个字符及其之后的所有字符、提取最后的 3 个字符、提取倒数第 2 个及其之前的
3 个字符、提取除了最后 4 个字符的字符串……那又该怎么办呢?别着急,set 命令在设计
的时候就已经充分考虑到我们的复杂需求,只要对刚才我们提到的字符截取语句稍做改动,
就可以很轻松地完成任务。
我们知道,数字的正负可以用+-符号来表示,同样的,方向的正反也可以用+-来标注。
在 set 做字符截取的时候,引入了+-符号来表示字符截取的方向:从左到右截取为+,从
右到左截取为-,所以,set var=%str:~1,4% 也可以写成 set var=%str:~+1,+4% ,
只是在从右到左截取的时候,情况发生了一点变化,那就是:偏移量的起点以整个字符串最
后一个字符的后一位来计算。现在,我们可以来回答上一段中提出的一些问题:
提取最后的 3 个字符:set var=%str:~-3%
提取倒数第 2 个及其之前的 3 个字符:set var=%str:~-5,4%
提取除了最后 4 个字符的字符串:set var=%str:~0,-4%
看了上面三种需求的代码,大家可能又会产生新的疑问:第一条怎么只有一个数字啊?
第三条最后一个数字是负号,又表示什么意思呢?
原来,在 set var=%str:~偏移量,长度% 这样的语句中,如果没有逗号及其之后的
长度,就表示截取偏移量位置上及其之后的所有字符,如果长度的值为负数,则表示抛弃最
后几个字符。
现在,我们可以对任意位置上的字符做提取工作了(假设 set str=123456789) :
① 提 取 1: set var=%str:~0,1% 或 set var=%str:~0,-8% 或 set
var=%str:~-9,1%
② 提 取 2: set var=%str:~1,1% 或 set var=%str:~1,-7% 或 set
var=%str:~-8,1%
③ 提 取 9: set var=%str:~8,1% 或 set var=%str:~8% 或 set
您可能关注的文档
最近下载
- 甘肃省暴雨图集新版.pdf VIP
- 课题开题报告:学科素养导向的道德与法治“教-学-评”一体设计研究.docx VIP
- 马工程《民法学》(第二版)下册参考教学课件07-11民法学-第七编 侵权责任法 第十一章.pptx VIP
- 小学英语核心素养培养与跨学科融合教学策略研究教学研究课题报告.docx
- TZS 0678—2025《生物安全实验室工作人员本底血清样本管理规范》(水印版).pdf VIP
- 河南省信阳市2025年某中学小升初入学分班考试语文考试真题含答案.docx VIP
- 马工程《民法学》(第二版)下册参考教学课件07-10民法学-第七编 侵权责任法 第十章.pptx VIP
- (高清版)DB13(J)∕T 8453-2021 住宅工程常见质量问题控制标准.pdf VIP
- 2024年水浒传知识点及考点总结.docx VIP
- 大学校园内急救知识培训.pptx VIP
原创力文档


文档评论(0)