批处理(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 表示传入的第二个参数,参数是用空格隔开 如果第一个参数中包含了空格,需要使用" " 包起来