Bat批处理教程 字符串操作

Bat批处理脚本中字符串操作比较常用,包括字符串截取、字符串替换、字符串合并、字符串查找、字符串扩充等,下面来看看如何编写Bat批处理脚本中的字符串操作代码。

1.字符串截取操作

截取字符串中的特定位置的一个或多个字符,语法格式:

%variable:~n,m%

参数说明:

variable:要截取字符串的变量名称;

n:开始截取字符串的偏移量;如果为正数,则从左边开始;如果为负数,则从右边开始;

m:要截取字符的个数。如果没有指定个数,则从偏移量位置开始截取剩下的所有字符。如果两个数字 (偏移量和长度) 都是负数,则偏移量是字符串长度加上(偏移量或长度)的负数,看文字不太好理解,后面通过实例进行解释。

直接上实例:

@echo off
set zifu=abcdefghijklmnopqrstwuvxyz
echo 原字符串:
echo %zifu%
 
rem abcdef
echo 截取前6个字符:
echo %zifu:~0,6%
 
rem ghijklmnopqrstwuvxyz
echo 截取第7个字符直到最后一个字符
echo %zifu:~6%
 
rem wuvxyz
echo 截取最后6个字符:
echo %zifu:~-6%
echo %zifu:~-6,6%
 
rem abcdefghijklmnopqrstwu
echo 截取第一个到倒数第5个字符:
echo %zifu:~0,-4%
 
rem cdefgh
echo 从第3个字符开始,截取6个字符:
echo %zifu:~2,6%
 
rem qrs
echo 从倒数第10个字符开始,截取3个字符:
echo %zifu:~-10,3%
pause

运行结果:

Bat批处理教程 字符串操作_第1张图片

实例:偏移量和长度均为负数。

@echo off
set zifu=0123456789
echo 原字符串:%zifu%
echo %zifu:~-9%
echo %zifu:~-9,-7%
echo %zifu:~-9,-6%
echo %zifu:~-9,-5%
echo %zifu:~-9,-4%
echo %zifu:~-9,-3%
echo %zifu:~-9,-2%
echo %zifu:~-9,-1%
 
rem error: ECHO 处于关闭状态。
echo %zifu:~-3,-3%
echo %zifu:~-3,-10%
 
pause

运行结果:

Bat批处理教程 字符串操作_第2张图片

解释一下,偏移量为负数时,偏移量字符串长度加上指定的负数偏移量(10 + -9 = 1),因此从第2个字符开始截取;如果没有指定待截取的长度,则截取到字符串末尾;如果指定的截取长度为负数,则表示从末尾排除n个字符。如:echo %zifu:~-9,-5% 将从第2个字符串开始截取,并且排除最后4个字符,截取结果为“12345”。

关于偏移量,可以看下图理解一下;

Bat批处理教程 字符串操作_第3张图片

偏移量为正数的时候,偏移量的值从0开始,偏移量为0时对应的字符为0,以此类推,偏移量为9的时对应于的字符为9;
偏移量为负数的时候,假如字符串长度为L,则第一个字符对应的偏移量为-L,第二个字符对应的偏移量为-L+1,以此类推,第N个字符对应的偏移量为-L+N,上面的例子字符串L=10,所以第一个字符0对应的偏移量为-10,第二个字符串1对应的偏移量为-10+1=-9;所以偏移量为-9是从第二个字符串开始截取。

实用举例:获取当前日期,然后截取成“*年*月*日”格式

@echo off
echo 当前时间:%date%
echo 当前时间:%date:~0,4%年%date:~6,1%月%date:~8,2%日
pause

运行结果:

Bat批处理教程 字符串操作_第4张图片

2.字符串替换操作

将某一字符串中的特定字符或字符串替换为给定的字符串。语法如下:

%variable:str1=str2%

参数说明:

variable:变量名,存放字符串。

str1:被替换的字符串。

str2:替换成的字符串,将使用该字符串去替换字符串中所有的 str1 字符串。
实例:将world替换成man

@echo off
set aa=hello world!  it's a good world!
echo 替换前:%aa%
echo 替换后:%aa:world=man%

echo aa=%aa%
set aa=%aa:world=man%
echo aa=%aa%
pause

运行结果:

Bat批处理教程 字符串操作_第5张图片

3.字符串合并操作

字符串合并很简单,就是将两个字符串放在一起。例如:

@echo off
set A=good
set B=student
 
rem 直接输出合并后的字符串
echo %A%%B%
 
rem 将合并后的字符串放入 C 变量中
set C=%A%%B%
echo %C%
 
pause

运行结果:

Bat批处理教程 字符串操作_第6张图片

你可能感兴趣的:(Bat批处理知识,运维)