【替换语法格式】
%VAR:str1=str2%
或者
!VAR:str1=str2!
【语法功能】
- 如果%VAR%中存在str1,则将字符串变量%VAR%(或 !VAR!)中的所有str1都替换为str2
- 如果%VAR%中不存在str1,则返回%VAR%
- 替换发生后,VAR 的值不会改变
示例
:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
::demo.bat
@echo off
set a="bbs. yangke .cn"
echo 替换前的值: "%a%"
:: %a%存在空格(" "),把" "替换为空
set var1=%a: =%
echo 替换后的值: "%var1%"
:: 替换发生后,a的值不会改变
echo a的值: "%a%"
echo ------------------------------------
set "a=abcde"
echo 替换前的值: "%a%"
:: %a%不存在 x ,则 %a% 把返回
set var2=%a:x=y%
echo 替换后的值: "%var2%"
:: 替换发生后,a的值不会改变
echo a的值: "%a%"
【标注一】 下载Notepad++
运行
C:\>demo
替换前的值: "bbs. yangke .cn"
替换后的值: "bbs.yangke.cn"
a的值: "bbs. yangke .cn"
替换后的值: "abcde"
a的值: "abcde"
C:\>demo
替换前的值: ""bbs. yangke .cn""
替换后的值: ""bbs.yangke.cn""
a的值: ""bbs. yangke .cn""
------------------------------------
替换前的值: "abcde"
替换后的值: "abcde"
a的值: "abcde"
C:\>
str1 和 str2可以是变量扩展
示例
:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set "a=abcde"
echo 替换前的值: "%a%"
set "rep=a"
:: !a!存在 %rep% ,则把 %rep% 替换为 y
echo 替换后的返回值:!a:%rep%=y!
运行
C:\>demo
替换前的值: "abcde"
替换后的返回值:ybcde
C:\>
字符串的替换功能在引用变量的地方均可以,并不一定必须要有set命令
示例
:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
::demo.bat
@echo off
set "a=abcde"
echo 替换前的值: "%a%"
:: %a%存在 a ,则把 a 替换为 y
echo 替换后的返回值:%a:a=y%
运行
C:\>demo
替换前的值: "abcde"
ybcde
C:\>demo
替换前的值: "abcde"
替换后的返回值:ybcde
C:\>
!VAR:str1=str2!
在变量延时展开中,使用字符串的替换功能
示例
:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
set "a=abcde"
echo 替换前的值: "%a%"
:: 在 a 变量延时展开中,使用字符串的替换功能
echo 替换后的返回值:!a:a=y!
运行
C:\>demo
替换前的值: "abcde"
替换后的返回值:ybcde
C:\>demo
替换前的值: "abcde"
替换后的返回值:ybcde
C:\>
写作不易,如果您觉得对您有用,请 “在下面一圈三连”。
本文含有隐藏内容,请 开通VIP 后查看