2017-12-18 24 views
1

편집하려는 작업 스케줄러 XML 파일이 있습니다.배치 파일을 통한 xmlstarlet 업데이트가 업데이트/작동하지 않음

 <?xml version="1.0" encoding="UTF-16"?> 
    <Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.4"> 
     <RegistrationInfo> 
     <Date>2017-03-12T16:40:52.4111579</Date> 
     <Author>Kevin</Author> 
     <Description>Runs Batch File For Counter</Description> 
     <URI>THETASKTITLEGOESHERE</URI> 
     </RegistrationInfo> 
    <Actions Context="Author"> 
    <Exec> 
     <Command>"ACTIONGOESHERE"</Command> 
    </Exec> 
    </Actions> 
</Task> 

여기는 배치 파일에있는 내용입니다.

@echo off 
pushd %~dp0 

xml ed -inplace -r "/Task/RegistrationInfo/Author" -v CGL XMLTEST1.xml 
xml ed -inplace -r "/Task/RegistrationInfo/URI" -v CGL-FakeTitle XMLTEST1.xml 
xml ed -inplace -r "/Task/Actions/Exec/Command" -v "C:\Batch\Counter.bat" XMLTEST1.xml 
pause 

나는 여기에서 제안을 시도했다. xmlstarlet update value nothing happens

"XMLTEST1output.xml"을 끝에 추가하면 파일이 비어 있습니다. 제안 사항이 도움이 될 것입니다. 고맙습니다!

+0

'-inplace' 옵션의 기능은 무엇입니까? – Cyrus

+0

일부'xmlstartlet'에는 원본 파일의 변경 사항을 저장하는'--inplace' 옵션이 있습니다. 그러나 그것은 (예를 들어) ".../URI"값이 내 테스트에서 CGL-FakeTitle로 변경되지 않는 이유를 설명하지는 않습니다. 이들 중 어느 것도'-r' 또는'-u'와 함께 작동하지 않습니까? 누구든지 "우리"생각에서 오류를 발견 할 수 있습니까? 감사합니다. 행운을 빕니다. – shellter

+0

위의 링크에 대한 내 의견을 참조하십시오. 'xml ... file.xml> file.xml'을 사용하지 마십시오! – shellter

답변

1

이 리눅스와 xmlstarlet와 나를 위해 작동 :

xmlstarlet edit --inplace \ 
      -N x="http://schemas.microsoft.com/windows/2004/02/mit/task" \ 
      -u "//x:Task/x:RegistrationInfo/x:Author" -v "CGL" \ 
      -u "//x:Task/x:RegistrationInfo/x:URI" -v "CGL-FakeTitle" \ 
      -u "//x:Task/x:Actions/x:Exec/x:Command" -v "C:\Batch\Counter.bat" XMLTEST1.xml 

내가 값을 업데이트 -u에 (이름 변경) -r로 전환. XMLTEST1.xml에서 UTF-16UTF-8으로 바꿨습니다.

+0

감사합니다. 나는 -u를 시도했지만 여전히. 그것은 작동합니다. 나는 UTF를 내일 교체하고 그것이 도움이되는지보기 위해 노력할 것이다. – KevinColby650