【WINDOWS / DOS 批处理】字符串替换

发布于:2022-11-01 ⋅ 阅读:(738) ⋅ 点赞:(0)

【替换语法格式】

%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 后查看

网站公告

今日签到

点亮在社区的每一天
去签到