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를 사용하여 출력을 로그로 리다이렉션하려고했으나 파일의 각 줄에 대한 에코가 생겼다. look의 변수 값이나 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 

로 실행, I는 입력 DIRS의 모든 하위 디렉토리의 파일을 처리하기 위해 서로 스크립트를 호출하기 위해 더 많은 로직을 추가했습니다. 여기에 스크립트를 공유하는 생각 :

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'와'대신'네가 하나 .. 늦게 깨달았다했다 – Monacraft

+0

cd'의 popd'를 사용해야합니다. –

답변

4

저장을 batchxform.cmd로

Asumes inputDir \의 IP를 파일의 소스로, XLS 등의 출력 디렉토리 및 inputDir \ Test.xls를 같은 inputDir \ 연산

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, 그러나 재발해야합니다. 지금 그걸로 일할거야. –