2017-06-13 2 views
-1

Datei mit HTML-Code:Windows-Batch-Streifen-Tags

<table> 
 
<tr><th>ID</th><th>NAME</th></tr> 
 
<tr><th>1</th><th>Alex</th></tr> 
 
<tr><th>2</th><th>Andy</th></tr></table>

Wie DATA OUTPUT OHNE TAGS mit Fenstern .bat Datei? (Kein vb)

So: 1: Alex 2: Andy

Dank

+1

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

+0

so, 3rd Party ist in Ordnung. Ich denke drüber nach. – Aleksey

+0

Verwenden Sie [xpath.bat] (https://github.com/npocmaka/batch.scripts/blob/master/hybrids/jscript/xpath.bat) -> 'xpath.bat html.xml // tr/th' – npocmaka

Antwort

2

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)

+0

Wie kann ich mehr Hilfe von Ihnen verlangen? Mein Skype ist axxler – Aleksey

+0

[hier] (https://stackoverflow.com/questions/ask). – Stephan

+0

@Stephan Können Sie bitte einige Kommentare zu Ihrem Code hinzufügen? Ich fand es sehr hilfreich in dieser Situation Danke! – Hackoo