如何从文本文件中读取值,然后查找并替换xml文件中的值?

时间:2015-07-06 10:55:44

标签: windows batch-file

我有一个.xml文件 - 让我们说A.xml。该文件包含“版本节点”

示例:

<Root>
    <Version>2.5</Version>
</Root>

现在,我想通过读取具有以下内容的.txt文件,动态地用不同的数字替换版本的值:

2.5 
3.5

这意味着我需要在A.xml中用'3.5'替换'2.5'字符串。

我需要在窗口批处理文件(.bat)文件的帮助下完成。

1 个答案:

答案 0 :(得分:1)

这应该有效:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
TYPE NUL>tempOutput.xml
SET line=0
SET from=
SET to=
FOR /F %%a IN (a.txt) DO (
    IF !line!==0 SET from=%%a
    IF !line!==1 SET to=%%a
    SET /a line=!line!+1
)
ECHO replacing %from% with %to%...
FOR /F %%a IN (a.xml) DO (
    SET currentLine=%%a
    SET currentLine=!currentLine:%from%=%to%!
    ECHO !currentLine!>>tempOutput.xml
)
DEL /q a.xml
MOVE tempOutput.xml a.xml
PAUSE

首先,我们创建一个临时文件(tempOutput.xml)。然后我们读取a.txt,假设它只有两行,第一行包含旧版本号,第二行包含新版本。

现在我们逐行读取a.xml并将旧版本号的任何外观替换为新版本,并将修改后的行存储在临时文件中。

最后,我们删除旧文件,并将其替换为已修改的文件,将其从tempOutput.xml重命名为a.xml。

编辑:是的,您可以简化代码并缩短代码,但我认为这更容易理解。