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


    【替换语法格式】

    %VAR:str1=str2%   

    或者 

    !VAR:str1=str2!

    【语法功能】

    • 如果%VAR%中存在str1,则将字符串变量%VAR%(或 !VAR!)中的所有str1都替换为str2 
    • 如果%VAR%中不存在str1,则返回%VAR%
    • 替换发生后,VAR 的值不会改变

            示例 

    1. :: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
    2. ::demo.bat
    3. @echo off
    4. set a="bbs. yangke .cn"
    5. echo 替换前的值: "%a%"
    6. :: %a%存在空格(" "),把" "替换为空
    7. set var1=%a: =%
    8. echo 替换后的值: "%var1%"
    9. :: 替换发生后,a的值不会改变
    10. echo a的值: "%a%"
    11. echo ------------------------------------
    12. set "a=abcde"
    13. echo 替换前的值: "%a%"
    14. :: %a%不存在 x ,则 %a% 把返回
    15. set var2=%a:x=y%
    16. echo 替换后的值: "%var2%"
    17. :: 替换发生后,a的值不会改变
    18. echo a的值: "%a%"

    【标注一】   下载Notepad++      

            运行

    1. C:\>demo
    2. 替换前的值: "bbs. yangke .cn"
    3. 替换后的值: "bbs.yangke.cn"
    4. a的值: "bbs. yangke .cn"
    5. 替换后的值: "abcde"
    6. a的值: "abcde"
    7. C:\>demo
    8. 替换前的值: ""bbs. yangke .cn""
    9. 替换后的值: ""bbs.yangke.cn""
    10. a的值: ""bbs. yangke .cn""
    11. ------------------------------------
    12. 替换前的值: "abcde"
    13. 替换后的值: "abcde"
    14. a的值: "abcde"
    15. C:\>

    str1 和 str2可以是变量扩展 

            示例

    1. :: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
    2. ::demo.bat
    3. @echo off
    4. setlocal enableDelayedExpansion
    5. set "a=abcde"
    6. echo 替换前的值: "%a%"
    7. set "rep=a"
    8. :: !a!存在 %rep% ,则把 %rep% 替换为 y
    9. echo 替换后的返回值:!a:%rep%=y!

            运行

    1. C:\>demo
    2. 替换前的值: "abcde"
    3. 替换后的返回值:ybcde
    4. C:\>

    字符串的替换功能在引用变量的地方均可以,并不一定必须要有set命令

            示例

    1. :: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
    2. ::demo.bat
    3. @echo off
    4. set "a=abcde"
    5. echo 替换前的值: "%a%"
    6. :: %a%存在 a ,则把 a 替换为 y
    7. echo 替换后的返回值:%a:a=y%

            运行 

    1. C:\>demo
    2. 替换前的值: "abcde"
    3. ybcde
    4. C:\>demo
    5. 替换前的值: "abcde"
    6. 替换后的返回值:ybcde
    7. C:\>

    !VAR:str1=str2! 

    在变量延时展开中,使用字符串的替换功能

    什么是变量延迟扩展

            示例

    1. :: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
    2. ::demo.bat
    3. @echo off
    4. setlocal enableDelayedExpansion
    5. set "a=abcde"
    6. echo 替换前的值: "%a%"
    7. :: 在 a 变量延时展开中,使用字符串的替换功能
    8. echo 替换后的返回值:!a:a=y!

            运行 

    1. C:\>demo
    2. 替换前的值: "abcde"
    3. 替换后的返回值:ybcde
    4. C:\>demo
    5. 替换前的值: "abcde"
    6. 替换后的返回值:ybcde
    7. C:\>

    写作不易,如果本文帮到您,请您 “在下面一圈三连”。 

  • 相关阅读:
    NLP模型笔记2022-20:py2neo接口处理知识图谱neo4j实体
    【编程之路】面试必刷TOP101:动态规划(入门)(62-66,Python实现)
    【干货】教你在十分钟内编译一个Linux内核,并在虚拟机里运行!
    计算机毕设(附源码)JAVA-SSM基于JAVA的校园电车租赁系统
    矩阵求导之二
    STC51单片机学习笔记3——C语言流水灯
    Eclipse常用设置
    历届蓝桥杯青少年编程选拔赛 科技素养题真题讲解 STEMA评测比赛真题解析【持续更新 已更新至18套】
    nodejs:fs文件系统模块
    Chapter15 : Artificial Intelligence in Compound Design
  • 原文地址:https://blog.csdn.net/mt15306338066/article/details/127605301