我有需要拆分成多个文件的XML文件,而且我已经有一个批处理文件可以很好地处理单个文件。我需要编辑批处理文件以处理单个目录中的大量XML文件。我尝试了几种不同的解决方法,但似乎无法解决这个问题。
作为一个额外的好处,我还希望输出文件名包含每个输出文件中两行不同的项目,以及每个文件开头和结尾插入的文本。
这是我当前的批处理文件:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /a destadd=0
SET "OrderString=parentName"
SET "found="
FOR /f "delims=" %%a IN (outbound_shipment_20161023.xml) DO (
ECHO("%%a"|FIND "%NRTOrderString%" >NUL
IF NOT ERRORLEVEL 1 (SET found=Y&set/a destadd+=1)
IF DEFINED found >>"Case!destadd!.xml" ECHO %%a
)
GOTO :EOF
使用上述处理后输出文件的示例:
<Order parentName="ABC-Corp">
<ClientName>ABC</ClientName>
<GroupName>Client</GroupName>
<SiteName>Home</SiteName>
<CaseNumber>634713</CaseNumber>
<ShippingDate>2016-10-20</ShippingDate>
<ShippingMethod>UPS</ShippingMethod>
<TrackingNumber>89273496512349823723423</TrackingNumber>
<OrderDetail>
<ItemShipped>ABC123</ItemShipped>
<Quantity>1</Quantity>
<ClientOrderId>ABCDEF876</ClientOrderId>
</OrderDetail>
每个原始XML文件包含上面显示的几个单独的输出,然后使用批处理文件分隔。
上面的批处理文件输出名称为Case1.xml,Case2.xml等的文件。我希望将其更改为&#34; Case_CaseNumber_ClientOrderID.xml&#34;。此外,它需要有&#34;装运&#34;插入每个输出文件开头和结尾的新行。
感谢您的帮助。
答案 0 :(得分:0)
要使其适用于多个.xml文件,只需更改此内容:
FOR /f "delims=" %%a IN (outbound_shipment_20161023.xml) DO (
ECHO("%%a"|FIND "%NRTOrderString%" >NUL
......对此:
FOR %%a IN (*.xml) DO (
FIND "%NRTOrderString%" "%%a" >NUL
也许对于其他项目,您可以创建单独的问题,同时显示您尝试过的不起作用的内容。