2013-10-14 4 views
4

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

Я начал с помощью пакетного файла с помощью командной строки raptorxml, как показано ниже:

C:\Program Files (x86)\Altova\RaptorXMLServer2013\bin>RaptorXML.exe xslt --input=c:\data\test1.xml --output=c:\data\output1.xml c:\data\test.xsl 

file:///c:/data/test1.xml: result="OK" xslt-output-files="file:///c:/data/output1.xml" 

Когда я пытаюсь сделать это в пакетном файле, как показано ниже, я не могу понять вещь, что происходит - не может понять, запущен ли скрипт или была ли какая-либо ошибка. Пробовал помещать ECHO между ними, но это тоже не помогло. Я попытался перенаправить вывод в журнал с помощью> log.log, но это просто получило бы эхо каждой из строк в файле. Я не могу увидеть значение переменных в образе или как вызов raptorxml формируется. Любые подсказки или указатели будут полезны - спасибо.

Вот мой пакетный файл: я бегу как batchxform.bat C:\data\ip

cls 
call :treeProcess 
goto :eof 

:treeProcess 
cd %1 
for %%f in (*.xml) do (
RaptorXML.exe xslt --input=%%f --output=c:\data\op\%%~nf.xml c:\data\test.xsl 
) 

for /D %%d in (%1) do (
    cd %%d 
    call :treeProcess 
    cd .. 
) 

exit /b 

После первого ответа/пост, я добавил больше логики для вызова скрипта из другого обрабатывать файлы из всех подкаталогов входных директорий. Мысль обмена, что сценарий здесь:

ECHO OFF 
set _xform=C:\Users\gkalra\Documents\work\Annotation\code\batchxform.cmd 
rem call _xform %1 
FOR /R %1 %%G in (.) DO (
Pushd %%G 
Echo now in %%G 
rem dir /b "%%G/*.xml" 
call "%_xform%" %%G 
Popd 
) 
Echo "back home" 
+1

для одного, вы должны использовать '' pushd' и popd' вместо 'cd' – Monacraft

+0

Да сделал это для одного .. понял, что поздно. –

ответ

4

Сохранить как batchxform.cmd

Asumes inputDir \ IP в качестве источника файлов, inputDir \ оп в выходной каталог и inputDir \ test.xls как XLS

Вызов в batchxform.cmd C: \ данные

@echo off 
    setlocal enableextensions 

    cls 

    if "%~1"=="" goto endProcess 

    set _inputDir=%~1\ip 
    set _outputDir=%~1\op 
    set _xsl=%~1\test.xsl 
    set _raptor=C:\Program Files (x86)\Altova\RaptorXMLServer2013\bin\RaptorXML.exe 

    for %%f in ("%_inputDir%\*.xml") do (
     "%_raptor%" xslt --input="%%f" --output="%_outputDir%\%%~nxf" "%_xsl%" 
    ) 

:endProcess 
    endlocal 
+0

Большое спасибо MC ND .. если вы не возражаете, не могли бы вы понять, что заставило ваше решение работать, и что я делал неправильно? это имена путей .. Я постараюсь узнать также. –

+1

Ваш командный файл на самом деле не так, мой простой более организованный и (используя кавычки, где это необходимо) подготовлен для пробелов в именах файлов/каталогов. Ваш код пытается восстановить исходный каталог, обрабатывая каждый подкаталог, возможно, пытаясь обработать то, что он не должен. –

+0

Спасибо MC ND, но я должен рекурсировать. будет работать над этим сейчас .. –

Смежные вопросы