批处理文件:编辑多个文件并根据变量保存名称,并在输出文件中插入文本

时间:2016-10-26 16:29:28

标签: batch-file batch-rename batch-updates

我有需要拆分成多个文件的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;插入每个输出文件开头和结尾的新行。

感谢您的帮助。

1 个答案:

答案 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 

也许对于其他项目,您可以创建单独的问题,同时显示您尝试过的不起作用的内容。