批处理 字符串处理

字符串替换

语法格式

将字符串变量%StrName%中的str1全部替换为str2.

1
%StrName:str1=str2%

实例

1
2
3
4
5
6
@echo off
set StrName=www_google_com
echo 替换前的值:"%StrName%"
set Var=%StrName:_=.%
echo 替换后的值:"%Var%"
pause

运行结果:

1
2
3
4
5
6
@echo off
set StrName=www_google_com
echo 替换前的值:"%StrName%"
set Var=%StrName:_=.%
echo 替换后的值:"%Var%"
pause

实例2

1
2
3
4
5
6
@echo off
set StrName=www_google_com_hk
echo 替换前的值:"%StrName%"
set Var=%StrName:_=被墙了%
echo 替换后的值:"%Var%"
pause

运行结果:

1
2
3
4
G:\Desktop\书籍\批处理\bat>字符串替换2.bat
替换前的值:"www_google_com_hk"
替换后的值:"www被墙了google被墙了com被墙了hk"
请按任意键继续. . .

字符串截取

正序截取 从左向右截取

1
%StrName:~[m[,n]]%
  • 方括号表示可选项
  • %为变量标识符,
  • StrName为变量名,不可省略
  • 冒号:用于分隔变量名和说明部分
  • ~可以简单理解为偏移
  • m为偏移量,缺省为0偏移量
  • n为截取长度,缺省为截取到最后.

实例

1
2
3
4
5
6
@echo off 
set a=www.google.com
:: 截取出google
set var=%a:~4,6%
echo %var%
pause

运行结果:

1
2
3
G:\Desktop\书籍\批处理\bat>字符串截取.bat
google
请按任意键继续. . .

分析
如果用数字1表示第一个字符w,则%a:~4,6%表示从第4个字符(不包括该字符)开始,往后截取6个字符,也就是从.这个字符开始往后截取6字符,得到google.用数学中的区间可以很好的理解,截取的区间为:(4,4+6]

逆序截取

1
2
3
4
5
6
@echo off 
set a=www.google.com
::倒数截取三位
set var=%a:~-3%
echo %var%
pause

运行结果

1
2
3
G:\Desktop\书籍\批处理\bat>字符串逆序截取.bat
com
请按任意键继续. . .