Es ist immer besser, XML oder andere strukturierte Daten als hierarchisches Objekt zu analysieren, anstatt als komplizierter Text zu hacken und kratzen. So sind Sie nicht auf die Formatierung der Daten angewiesen, egal ob es sich um Verschönerung, Minimierung oder was auch immer handelt. Einfachste Lösung wäre dies in Ihrem Batch-Skript zu setzen:
for /f "delims=" %%I in (
'powershell "([xml](gc filename.xml)).SelectSingleNode('//P4PORT/text()').data"'
) do set "P4PORT=%%I"
echo %P4PORT%
Wenn Sie Geschwindigkeit über Einfachheit schätzen, können Sie JScript auch aufrufen, die XML zu analysieren. Speichern Sie dieses Batch + JScript-Hybridskript mit der Erweiterung .bat.
@if (@CodeSection == @Batch) @then
@echo off & setlocal
for /f "delims=" %%I in (
'cscript /nologo /e:JScript "%~f0" "filename.xml"'
) do set "P4PORT=%%I"
echo %P4PORT%
goto :EOF
@end // end Batch/begin JScript hybrid code
var xml = WSH.CreateObject('MSXML2.DOMDocument.6.0');
xml.load(WSH.Arguments(0));
WSH.Echo(xml.selectSingleNode('//P4PORT/text()').data);
vielleicht haben Sie eine Vbscript erstellen möchten der den XML (XPATH) nach dem gewünschten Wert abfragt und ausdruckt. Aus der Back-Datei können Sie dies wieder mit Ihrer for() -Schleife lesen – AcidJunkie
Probieren Sie 'for/f'-Token = 2 delims = <>" %% R in ('Findstr/L/I/C: "" "Datei .xml "') setze" LAST = %% R "', danach 'echo (% LAST%' (vorausgesetzt es gibt keine führenden Leerzeichen in der Textzeile) ... –
aschipfl