需求背景
有多个相同的XML文件在不同的子文件夹下,需要修改特定的内容值。
需修改的文件及目录结构如下
文件夹 PATH 列表
卷序列号为 DE04-7C6E
D:.
└─1
│ pom.xml
│
├─2
│ pom.xml
│
└─3
│ pom.xml
│
└─4
pom.xml
需修改的文件内容如下
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 版本号 -->
<groupId>com.jnpf</groupId>
<artifactId>jnpf-java-cloud</artifactId>
<packaging>pom</packaging>
<version>${jnpf.version}</version>
</project>
BAT批量修改脚本
@echo off
rem 关闭回显功能
rem 禁用本地全局延迟变量
setlocal DisableDelayedExpansion
rem 设置变量参数:DIR是脚本当前工作目录;OldData是需要修改的原始值;NewData是需要修改的目标值
set DIR="%cd%"
set OldData=${jnpf.version}
set NewData=2.1
rem 循环遍历当前工作目录和子目录中的所有xml文件
for /R %DIR% %%a in (*.xml) do (
(
rem 循环遍历当前工作目录和子目录中的所有xml文件并读取文件内容
for /F "usebackqdelims=" %%b in (%%a) do (
set str=%%b
rem 启用本地延迟变量
setlocal enabledelayedexpansion
rem 替换文件内容
set "str=!str:%OldData%=%DataVar%!"
rem 打印替换后的内容生成临时文件
echo,!str!
endlocal)) >"%%a%.tmp"
rem 使用生成的临时文件替换源文件
move "%%a%.tmp%.tmp" "%%a%"
)