Maven们
我有下面的test_123.xml文件。我需要提取几行,并将其移动到result.txt文件。似乎有一些问题,在我的代码。请帮助修复此代码提取所需的信息。
<?xml version="1.0" encoding="ascii" ?>
<RunTimeModule Type="FlowManager">
<Id>3</Id>
<Name>test_123</Name>
<StandAlone>Y</StandAlone>
<Log>
<Mode>DEBUG</Mode>
<Path>/test01/log</Path>
<Retention>7</Retention>
</Log>
<UXCodes>
<System>UXtest510</System>
<User>UXtest510</User>
</UXCodes>
<Alert>
<Frequency>15</Frequency>
</Alert>
<FlowManager>
<LoopingFrequency>120</LoopingFrequency>
<ProcessAndTerminate>N</ProcessAndTerminate>
<CleanUpMemoryAfterProcess>Y</CleanUpMemoryAfterProcess>
<CleanUpMemoryThreshholdInMB>5</CleanUpMemoryThreshholdInMB>
<RetryAttempts>Infinite</RetryAttempts>
<Node Id="1" Name="SourceFtp">
<Adapter Type="Source" TypeName="Ftp" Module="ftp.dll"/>
<InputParameters>
<Parameter Name="FilePath" Value="/test_dev/TestSend/"/>
<Parameter Name="FileName" Value="*.txt"/>
<Parameter Name="MarkData">
<SubParameter Name="RenameFile" Value="Y"/>
</Parameter>
<Parameter Name="LogonAttempts" Value="10"/>
<Parameter Name="FtpProperties">
<SubParameter Name="HostIP" Value="192.168.10.5"/>
<SubParameter Name="HostName" Value="test01"/>
<SubParameter Name="UserId" Value="test01"/>
<SubParameter Name="Password" Value="_SSC_PASSWORD_AT_LOGIN"/>
<SubParameter Name="Port" Value="21"/>
<SubParameter Name="TransferMode" Value="ASCII"/>
<SubParameter Name="CheckFileSize" Value="N"/>
<SubParameter Name="ConnectionTimeOut" Value="540"/>
</Parameter>
</InputParameters>
</Node>
<Node Id="2" Name="DestinationPriceQ">
<Adapter Type="Destination" TypeName="MQ" Module="asmq.dll"/>
<InputParameters>
<Parameter Name="QueueManager" Value="QT0012"/>
<Parameter Name="Queue" Value="EPH.TEST.IN.OUT"/>
<Parameter Name="UseCCDT" Value="Y"/>
<Parameter Name="PutMessageOptions">
<SubParameter Name="Group:EnableMessageGrouping" Value="N"/>
</Parameter>
<Parameter Name="MQMD">
<SubParameter Name="Segmentation" Value="N"/>
<SubParameter Name="LogicalOrder" Value="N"/>
<SubParameter Name="Format" Value="MQSTR"/>
</Parameter>
<Parameter Name="$Data$" Map="Source.Ftp.1.$Data$"/>
</InputParameters>
</Node>
</FlowManager>
</RunTimeModule>
我需要提取以下5个参数:
<HostIP> <UserId> <FilePath> <FileName> <QueueManager>
下面是从xml文件中提取5个参数的代码,但是我没有从下面的批处理脚本中得到想要的输出
@echo off
setlocal EnableDelayedExpansion
(for /F "delims=" %%a in ('findstr /I /L "<HostIP> <UserId> <FilePath> <FileName> <QueueManager>" H:\test_123.xml') do (
set "line=%%a"
set "line=!line:*<HostIP>=!"
set "line=!line:*<UserId>=!"
set "line=!line:*<FilePath>=!"
set "line=!line:*<FileName>=!"
set "line=!line:*<QueueManager>=!"
for /F "delims=<" %%b in ("!line!") do echo %%b
)
) > result.txt
result.txt文件未附加任何数据。
这是节点Id=“1”的预期输出。
<SubParameter Name="HostIP" Value="192.168.10.5" />
<SubParameter Name="UserId" Value="test01" />
<Parameter Name="FilePath" Value="/test_dev/TestSend"/>
<Parameter Name="FileName" Value="*.txt" />
这是节点Id=“2”的预期输出
<Parameter Name="QueueManager" Value="QT0012"/>
2条答案
按热度按时间x8diyxa71#
如果我们接受你想要的子字符串的唯一示例只出现一次,那么下面的批处理文件是否能帮助你?
你甚至可以把它放在一行中:
或者甚至从命令提示符窗口运行它:
根据您提交的XML文件内容,当前目录中
result.txt
的预期输出为:iyr7buue2#
试试这个: