1. 语法
str:oldChar=newChar
解释:将str中的oldChar替换成newChar。
2. 用法示例
@echo off&setlocal enabledelayedexpansion
rem 将strA中的345a替换成000,并赋值给strB
set strA=12345abc
set strB=!strA:45a=000!
echo !strB!
pause
result: 123000bc
替换为空
等号后面省略newChar就能替换为空。
set strB=!strA:45a=!
result: 123bc
3. 循环案例
将所有文件路径中根目录路径替换为空,比如,
根目录:D:\CodeTest\BatTest\imagebed\
文件路径:D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (3).jpg
替换后:wallpaper\wallpaper (3).jpg
代码如下:
@echo off&setlocal enabledelayedexpansion
rem %CD%获取当前路径,后面不自动带\,所以手动加个\
set basePath=%CD%\
echo !basePath!
rem /r表示递归的意思,子目录的文件也能遍历出来
for /r %%i in (*.jpg, *.png) do (
echo %%i
set str=%%i
rem 取basePath变量值时,千万别用双感叹号去取值,外层有了就别去嵌套,不然没好果子吃
set str=!str:%basePath%=!
rem 干脆把反斜杠也替换成斜杠得了
set str=!str:\=/!
echo !str!
)
pause
result:
D:\CodeTest\BatTest\imagebed\
D:\CodeTest\BatTest\imagebed\blog\PicGo安装Gitee插件.png
blog/PicGo安装Gitee插件.png
D:\CodeTest\BatTest\imagebed\blog\spring-overview.png
blog/spring-overview.png
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (3).jpg
wallpaper/wallpaper (3).jpg
D:\CodeTest\BatTest\imagebed\wallpaper\wallpaper (5).jpg
wallpaper/wallpaper (5).jpg
请按任意键继续. . .