BATCH: For-Schleife mit type und find laufbar machen
Guten Tag,
ich habe folgendes Problem. Ich habe eine XML-Datei, die etwa wie folgt aussieht:
Ich möchte gern den Wert zwischen <txtNumber> und </txtNumber> in eine Variable schreiben
Ich scheitere leider bereits daran, die komplette Zeile in eine Variable zu schreiben (der Plan ist, den Rest dann links und rechts weg zu schneiden).
Ich habe bereits einiges getestet. Leider habe ich es bisher besten Falls geschafft, den Text "type" in die Variable Last zu schreiben.
Anbei ein entsprechender Versuch:
Ich schaffe es einfach nicht, die Befehle zwischen den Klammern korrekt zu escapen. Habt ihr eventuell eine Idee?
Vielen Dank!
Mit freundlichen Grüße
Kartoffelpelle
ich habe folgendes Problem. Ich habe eine XML-Datei, die etwa wie folgt aussieht:
<?xml version="1.0" encoding="utf-8"?>
<preset>
<Address>
<txtNumber>123</txtNumber>
</Address>
</preset>
Ich möchte gern den Wert zwischen <txtNumber> und </txtNumber> in eine Variable schreiben
Ich scheitere leider bereits daran, die komplette Zeile in eine Variable zu schreiben (der Plan ist, den Rest dann links und rechts weg zu schneiden).
Ich habe bereits einiges getestet. Leider habe ich es bisher besten Falls geschafft, den Text "type" in die Variable Last zu schreiben.
Anbei ein entsprechender Versuch:
set HomeDir=C:\Test
for /f %%i in ('type %HomeDir%\Settings.xml ^| find /i "<txtNumber>"') do set Last=%%i
echo %last%
Ich schaffe es einfach nicht, die Befehle zwischen den Klammern korrekt zu escapen. Habt ihr eventuell eine Idee?
Vielen Dank!
Mit freundlichen Grüße
Kartoffelpelle
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 436013
Url: https://administrator.de/contentid/436013
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
6 Kommentare
Neuester Kommentar
Überleg mal wie die ECHO Zeile aussieht, wenn du die Variable auflöst und welche Bedeutung < und > dann bekommen. Passe doch deine FOR /F Schleife so an, dass du von vorn herein nur den Wert in der Variablen hast.
Dass man XML nur über das DOM vernünftig verarbeiten kann (in Batch nicht verfügbar), sollte dir aber bewusst sein. Wenn das komplette XML nur aus einer Zeile bestehen würde oder ohne jeglichen Zeileneinzug vorgegeben wäre, dann ist das immer noch genauso valide. Bloß für dich nicht mehr verarbeitbar.
Steffen
for /f "tokens=3 delims=<>" %%i in ('type "%HomeDir%\Settings.xml" ^| find /i "<txtNumber>"') do set "Last=%%i"
Steffen
Moin,
ich empfehle Dir dringend, bei dem Problem die Powershell zu benutzen, mit der Du relativ leicht auf eine XML-Struktur zugreifen kannst.
https://www.langlitz-it.de/?p=1297
https://www.ip-insider.de/xml-bearbeitung-mit-der-powershell-a-66086/
https://www.heise.de/ix/artikel/Datenzugriff-506816.html?artikelseite=&a ...
hth
Erik
ich empfehle Dir dringend, bei dem Problem die Powershell zu benutzen, mit der Du relativ leicht auf eine XML-Struktur zugreifen kannst.
https://www.langlitz-it.de/?p=1297
https://www.ip-insider.de/xml-bearbeitung-mit-der-powershell-a-66086/
https://www.heise.de/ix/artikel/Datenzugriff-506816.html?artikelseite=&a ...
hth
Erik