2017-12-18 61 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

これは、Linuxと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

関連する問題