DOS批处理命令-字符串操作

http://www.cnblogs.com/liuhy/p/3223517.html
DOS批处理命令-字符串操作
 1、截取字符串


从指定变量中截取指定位置的字符串,并返回。*这个处理,并不改变变量的值


语法格式:%变量名:~开始位置,终了位置% 


注:正数的时候开始位置是从0开始向右计算,负数的时候从1开始向右计算。(跳的个数为指定开始位置的绝对值)


具体有以下几种截取方式,看实例去理解用法,这个时候,我们假设有一个变量【var】,其值为【1234567890】。


①正常路线:


%var:~5,2% ? 67


②无终了:


%var:~5% ? 67890


③负终了:


%var:~5,-2% ? 678


④负开始位置:


%var:~-6,2% ? 56


⑤负开始无终了:


%var:~-6% ? 567890


⑥负开始负终了:


%var:~-6,-2% ? 5678


⑦没有开始:


%var:~,4% ? 1234


⑧无开始无终了:


%var% ? 1234567890


正常的情况下,就这几种截取的情况,完全可以根据我们业务的需要,来使用不同的方法来截取字符串。


这个字符串截取中,还是有几个规律的


A、开始位置的计算:当开始位置指定为正数的时候,我们就可以从左侧开始查找开始位置(左侧第一个字符为0)


              当开始位置省略或者为0的时候,开始位置那个字符就是要截取的开始字符。


              当开始位置指定为负数的时候,我们就可以从右侧开始查找指定位置(右侧第一个字符为-1)


B、终了位置的计算:当终了位置指定为正数的时候,我们就可以从上述计算得到的终了位置查找终了位置(开始位置为1)


              当终了位置省略或者为0的时候,字符串的终了位置就是要截取字符串的终了位置


              当终了位置指定为负数的时候,我们就可以从右侧开始查找指定位置(右侧第一个字符为0)


C、最终截取的字符串就是开始位置到终了位置之间的字符串(包括开始位置和终了位置)


------------------------------------------------------------------------------------------------------------------------------------------------------


但是,这个字符串截取是不是有异常发生呢?有,也没有。


当要截取的字符串不为空,并且,要截出的字符串不不能正常截出的时候,返回结果就是空值。


当要截取的字符串本身就是空的时候,取得结果就是【~开始位置,终了位置】,也就是命令的一部分被返回出来。


接下来继续讨论这个问题,既然要截取的字符串为空的时候,解出来的东西乖乖的,那我们能不能不让它进去呢?当然,我们使用我们已知的字符串判断函数就是可以的。


例如下面代码的处理:


复制代码
@echo off


set var=


IF DEFINED var (
    echo DEFINED
    echo %var:~1,1%
) else (
    echo NOT DEFINED
)
复制代码
运行结果为:


F:\tmp>a.bat
NOT DEFINED


可见,当var为空的时候,分支根本就没有走进去。程序显然没有走进去,


当分歧没有进去的时候,在该分歧内,我即使写不合法的命令,也不会报错的,不信你可以试试,反正我是试过了。


但是,下面这一点,就有点费解了,且看代码:


复制代码
@echo off


set var=


IF DEFINED var (
    echo DEFINED
    IF %var:~1,1% EQU A (
        echo true
    )
) else (
    echo NOT DEFINED
)
复制代码
这个时候,红色字体部分虽然跑不到,但是,竟然跑不过,所以,我就郁闷了。(报1的使用方法不对。--1 の使い方が誤っています。)


batch程序的执行方式是什么的?不知道,想知道,但是,又不知道到哪里知道去。


 


2、字符串替换


字符串替换,就是把某一字符串中的特定字符或字符串替换为给定的字符串


语法结构:%变量名:替换前=替换后%


替换前不可以为空,但是,替换后可以为空


还有一点,变换前和变换后不能用变量表示,而变量名只能有变量名来表示。


例:%var:123=abc%


 


3.字符串拼接,直接将两个字符串放到一块儿就可以了。


例如:字符串123和abc拼接,那么就可以写成123abc


如果是字符串变量123和abc拼接,那么就可以写成%123%%abc%


 


4、字符串查找,例如,查找字符串345在字符串123456789123456789中位置


哈哈,这个我还不知道,以后知道了再补上去。如果系统没有给出方法的话,就只能写方法查找了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值