【bat脚本】字符串替换

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
请按任意键继续. . .

文章作者: 叶遮沉阳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 叶遮沉阳 !
  目录