2016-10-26 15 views
0

У меня есть 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 и т. Д. Я бы хотел, чтобы это изменилось как «Case_CaseNumber_ClientOrderID.xml». Кроме того, в начале и конце каждого выходного файла потребуется добавить «Отгрузка» в новые строки.

Спасибо за любую помощь.

ответ

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 

Возможно, для других элементов, вы можете создать отдельные вопросы, также показывающий, что вы пытались, что не работает.