ich Batch mögen, aber ehrlich: es ist kein geeignetes Werkzeug XML-Dateien für die Bearbeitung. Die folgende ist eine Übung in Logik und Schmerz als eine geeignete Lösung (wohl aber zumindest mit so etwas wie Ihr Beispiel ....):
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%a in (t.txt) do call :process "%%a"
goto :eof
:process
set "line=%~1"
set flag=0
set var=
for /l %%i in (0,1,100) do (
if "!line:~%%i,1!"=="<" (
set /a "flag+=1"
set "var=!var!:"
)
if !flag!==0 set "var=!var!!line:~%%i,1!"
if "!line:~%%i,1!"==">" set /a flag-=1
)
for /f "tokens=1,2 delims=:" %%b in ("!var!") do echo %%b:%%c
Wie es funktioniert:
die ersten for
Schleife Prozesse jeweils Zeile der Textdatei (eine nach der anderen).
Das Unterprogramm verarbeitet die Zeile Zeichen für Zeichen. Es erhöht die flag
Variable jedes Mal, es trifft eine <
(plus fügen Sie eine :
, weil wir wissen, der (mögliche) Wert ist am Ende) und sinkt bei jedem >
. Wenn also flag
Null ist, sind wir "außerhalb" eines Tags und können das Zeichen zu einer Variablen hinzufügen.
Die letzte for
umformatiert nur var
, weil es zu viele sind :
(jeden Tag starten eine :
hinzugefügt wird)
Warum ausschließen Sie vb? Es ist eine Skriptsprache, die das XML-Format versteht. Batch ist für die Aufgabe nicht prädestiniert. Selbst wenn Sie die Tags mit einem Drittanbieter-Tool wie sed entfernen, 'sed -e" s/<[^>] *> // g "test.xml" enthält die Ausgabe immer noch 'IDName' und die Zahlen vor Alex und Andy' ohne einen Doppelpunkt. – LotPings
so, 3rd Party ist in Ordnung. Ich denke drüber nach. – Aleksey
Verwenden Sie [xpath.bat] (https://github.com/npocmaka/batch.scripts/blob/master/hybrids/jscript/xpath.bat) -> 'xpath.bat html.xml // tr/th' – npocmaka