2016-10-26 55 views
0

我有我需要分割成多个文件的XML文件,并且我已经有一个批处理文件,可以很好地处理单个文件。我需要编辑批处理文件来处理单个目录中的大量XML文件。我尝试了几种不同的方式来解决这个问题,但似乎无法让它工作。批处理文件:编辑多个文件并保存基于变量的名称,并在输出文件中插入文本

作为额外的好处,我还希望输出文件名包含来自每个输出文件中两行不同行的项目,以及每个文件开始和结尾的插入文本。

这里是我当前的批处理文件:

<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文件包含几个个别输出:

@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 

处理后的输出文件与上面的例子如上所示,然后使用批处理文件进行分隔。

上面的批处理文件输出名称为Case1.xml,Case2.xml等的文件。我希望更改为“Case_CaseNumber_ClientOrderID.xml”。此外,它需要在每个输出文件的开始和结尾处在新行上插入“Shipment”。

感谢您的任何帮助。

回答

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 
也许对于其他项目

,您可以创建独立的问题,还显示你已经尝试过的不起作用。

相关问题