替换批处理文件中的特定XML标记内容

时间:2016-09-01 05:59:33

标签: batch-file

我的xml文件名为Test.xml。我想在xml标记<con:selectedAuthProfile>value</con:selectedAuthProfile>中将xml标记<con:testStep>的内容从值替换为“Pharmacy-Authorization”,id =“123456789”。我希望我能为此找到代码。谢谢你们提前!我将在下面解释这个过程。

  1. 使用ID =“123456789”
  2. 搜索xml标记<con:testStep type=a id=>
  3. 在该标记内,我需要替换xml标记<con:selectedAuthProfile>*</con:selectedAuthProfile>

    的内容

    以下是代码:

    <con:testStep type="a" name="TestStep 1" id="123456789">
       <xml1>XMLVALUE1</xml1>
       <xml2>XMLVALUE2</xml2>   
       <con:selectedAuthProfile>value</con:selectedAuthProfile>
    </con:testStep>
    <con:testStep type="b" name="TestStep 2" id="987654321">
       <xml3>XMLVALUE3</xml3>
       <xml4>XMLVALUE4</xml4>
       <con:selectedAuthProfile>value</con:selectedAuthProfile>
    </con:testStep>
    
  4. 正如您在XML中看到的那样,标签<con:selectedAuthProfile>value</con:selectedAuthProfile>有两个实例/出现。我只想根据其PARENT TAG更改此标记的内容,该标记为<con:testStep>且id =“123456789”。我希望有可能

1 个答案:

答案 0 :(得分:2)

这是更改文件中任何特定单词的示例。

您必须运行两个.bat脚本。 将脚本命名为Script1.batScript2.bat

Script1

@ECHO OFF
Script2.bat "Orange" "Apple" "file.txt" >"newfile.txt"

Script2

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION

if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
    set "line=%%B"
    if defined line (
        call set "line=echo.%%line:%~1=%~2%%"
        for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
    ) ELSE echo.
)

将这两个脚本复制到.txt文件中并将其重命名为.bat,同时确保将它们放在与要编辑的文件相同的文件夹中。

该程序将单词Orange替换为单词Apple。您只需要运行Replace.bat

您的输入文件位于Script1,因此请根据您的需要进行编辑。