Fork me on GitHub

批处理(bat)命令修改xml模板数据

给定一个模板,然后通过bat修改某个节点中的值

模板如下:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
    <UserInfo>${userInfo.version}</UserInfo>
</Task>

 

然后通过bat脚本来进行修改UserInfo中的节点数据

 

@echo off
rem 进入当前路径
cd /d %~dp0
rem 设置
set UserInfo=我是koalin
rem 禁用本地全局延迟变量
setlocal DisableDelayedExpansion

set FileName=Template.xml
set FileNameTmp=TemplaterTmp.xml
set UserInfoKey=${userInfo.version}
rem 循环遍历当前工作目录和子目录中的所有xml文件并读取文件内容
( for /F "usebackqdelims=" %%b in (%FileName%) do (
set str=%%b
rem 启用本地延迟变量
setlocal enabledelayedexpansion

rem 替换文件内容
set "str=!str:%UserInfoKey%=%UserInfo%!"

rem 输出到临时文件
echo,!str!
endlocal)
) >"%FileName%%.tmp"
rem 使用生成的临时文件替换源文件
move "%FileName%%.tmp%.tmp" "%FileNameTmp%%" >nul 2>nul

timeout /t 1 >nul 2>nul

通过以上的代码就可以修改模板了

bat其他知识

1.    set var=%var:~1,-1%   去掉var变量值外的两个引号

2. 外部传入的参数  %1 表示传入的第一个参数 %2 表示传入的第二个参数,参数是用空格隔开 如果第一个参数中包含了空格,需要使用" " 包起来

 

posted @ 2022-08-08 20:10  黄高林  阅读(1487)  评论(0编辑  收藏  举报