Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch - HTML tags entfernen

Frage Entwicklung Batch & Shell

Mitglied: Peterle123

Peterle123 (Level 1) - Jetzt verbinden

24.09.2008, aktualisiert 25.09.2008, 5418 Aufrufe, 2 Kommentare

Hallo Leute.

Habe nach dem Lesen unzähliger Beiträge und durch viel Probieren aus nahezu unlesbarem Unicode-Buchstabensalat in einer Log-Datei folgenden halbwegs lesbaren Text extrahiert:

01.
<bold>Incremental Backup</bold><endl/><tabpoint value=30><indent value=4>From: <indent value=10><textcolor value=navyblue>Drive F</textcolor></indent><indent value=4><endl/>To file: <indent value=10><textcolor value=navyblue>Y:\Backupfile.dat</textcolor></indent><indent value=4><endl/>Speed: <indent value=10><textcolor value=navyblue>Normal</textcolor></indent><indent value=4><endl/></indent> /> 
02.
Backup Part 1 of 2<endl/><tabpoint value=30><bold>Creating Structure<endl/></bold><indent value=4>Hard disk: <indent value=10>2</indent><indent value=4><endl/>Drive letter: <indent value=10>F:</indent><indent value=4><endl/>File system: <indent value=10>NTFS</indent><indent value=4><endl/>Volume label: <indent value=10>BACKUP</indent><indent value=4><endl/>Size: <indent value=10>372,6 GB</indent><indent value=4><endl/></tabpoint></indent> /> 
03.
Backup Part 2 of 2<endl/><tabpoint value=30><bold>Saving structure<endl/></bold><indent value=4>Hard disk: <indent value=10>2</indent><indent value=4><endl/></indent> /> 
04.
Backup has succeeded. /> 
05.
ECHO ist eingeschaltet (ON).
nun hab ich ziemlich lange herumprobiert und kriege es einfach nicht hin, die html-tags zu entfernen (und im Anschluss das alles so zu formatieren), so dass folgender Text entsteht:

01.
Incremental Backup 
02.
From: Drive F 
03.
To File: Y:\Backupfile.dat 
04.
Speed: Normal 
05.
 
06.
Backup Part 1 of 2 
07.
Creating Structure 
08.
Hard disk: 2 
09.
Drive letter: F: 
10.
File system: NTFS 
11.
Volume label: BACKUP 
12.
Size: 372,6 GB 
13.
 
14.
Backup Part 2 of 2 
15.
Saving structure 
16.
Hard disk: 2 
17.
 
18.
Backup has succeeded.

Kann jemand helfen? Wär echt ne unglaubliche Erleichterung.

Wenn möglich, würde ich den Umgang mit sed vermeiden wollen, damit das Script portabel bleibt und auch auf Systemen ohne installiertem sed lauffähig ist.

Danke schon mal!!
Mitglied: bastla
24.09.2008 um 22:08 Uhr
Hallo Peterle123 und willkommen im Forum!

Batch und HTML-Tags ist (wegen "<" und ">", die ja in Batch als Umleitungszeichen eine besondere Bedeutung haben), ohnehin schon eine Sache für sich - Ersetzungen (bzw Entfernungen ), die innerhalb einer Zeile durgeführt werden sollen, machen es dann nicht einfacher ...

Konsequenz daraus: Wenn schon kein externes Tool wie "sed", dann zumindest eine Sprache verwenden, mit der Stringbearbeitung vergleichsweise schmerzlos funktioniert, nämlich VBScript. Damit das Ganze aber portabel (und das möglichst komfortabel) bleibt, bietet es sich an, das Script durch den Batch erzeugen (und wieder entfernen) zu lassen.

Soferne also VBScript zur Verfügung steht, sollte der folgende Batch aus dem Log (in Unicode) ein einigermaßen lesbares Ergebnis erzeugen:
01.
@echo off & setlocal 
02.
set "In=Z:\Log_Unicode.txt" 
03.
set "T=%temp%\Log_ASCII.txt" 
04.
set "Out=Z:\L.txt" 
05.
 
06.
type "%In%">%T% 
07.
set R=%temp%\RemoveTags.vbs 
08.
>%R%  echo Inhalt=CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll 
09.
>>%R% echo Zeilen=Split(Replace(Replace(Replace(Inhalt," />",""),"<",vbCrLF^&"<"),">",">"^&vbCrLF),vbCrLF):Inhalt="":For i=0 To UBound(Zeilen) 
10.
>>%R% echo If InStr(Zeilen(i),"<")+InStr(Zeilen(i),">")=0 Then If Trim(Zeilen(i))^<^>"" Then Inhalt=Inhalt^&^vbCrLF^&^Trim(Zeilen(i)) 
11.
>>%R% echo Next:WScript.Echo Replace(Mid(Inhalt,3),":"^& vbCrLF,": ") 
12.
 
13.
cscript //nologo %R% %T%|findstr /v /c:"ECHO ist eingeschaltet (ON)">"%Out%"  
14.
del %R% 
15.
del %T%
Das enthaltene VBScript ist etwas knapp formuliert, daher eine kurze Erklärung der Vorgangsweise:

Es wird zunächst die gesamte Datei (nachdem sie per "type" aus Unicode in ASCII/ANSI umgewandelt wurde - diesen Schritt habe ich nicht getestet, sollte aber funktionieren) in einen String eingelesen, in welchem folgende Änderungen vorgenommen werden:
  • Alle " />" werden entfernt
  • Alle "<" werden zu Zeilenschaltung + "<" umgewandelt
  • Alle ">" werden zu ">" + Zeilenschaltung umgewandelt
Durch die letzten beiden Vorgänge sollten alle Tags in eigenen Zeilen stehen.

Als nächstes wird der Gesamtstring in einzelne Zeilen aufgeteilt. Von diesen Zeilen werden alle verworfen, welche "<" oder ">" enthalten oder (bis auf Leerzeichen) leer sind.

Die verbleibenden Zeilen werden wieder zu einem String kombiniert, in welche als letzte Anpassung jede Zeile, welche mit ":" endet, mit der folgenden Zeile, getrennt durch ein Leerzeichen, verbunden wird (was zum kleinen Schönheitsfehler führt, dass die Zeilen 9 und 10 Deines Beispieles oben - wegen des "F:" am Ende der Zeile 9 - ebenfalls zusammengefasst werden).

Das Ergebnis wird an den Batch zurückgeliefert und dort (vor dem Schreiben in die Ausgabedatei) per Filterung noch von der Zeile "ECHO ist eingeschaltet (ON)." befreit.
Noch eine Anmerkung: Sinnvoller fände ich es, an der Quelle anzusetzen und gleich ein vernünftiges Log erzeugen zu lassen ...

Grüße
bastla
Bitte warten ..
Mitglied: Peterle123
25.09.2008 um 14:23 Uhr
Hallo bastla!

Klasse! Nicht nur eine schnelle und einfache, sondern auch portable Lösung!

vielen Dank!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Einen Teil eines Textpfades aus einer TXT per Batch entfernen!? (3)

Frage von kampen zum Thema Batch & Shell ...

Batch & Shell
gelöst Zeilenumbruch-Zeilen-Vorschub entfernen? (Batch) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Erneute Frage: Powershell in Batch mit Html (6)

Frage von michi-ffm zum Thema Batch & Shell ...

Neue Wissensbeiträge
Administrator.de Feedback

Umgangsformen auf der Seite

(3)

Information von Frank zum Thema Administrator.de Feedback ...

Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(10)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Exchange Server
gelöst RU 17 Exchange 2010 . Erfahrungen? (11)

Frage von keine-ahnung zum Thema Exchange Server ...

Batch & Shell
Dir tc Befehl unter Windows 10 macht Probleme (11)

Frage von sugram zum Thema Batch & Shell ...

Windows Server
Festplatten Ruhezustand Windows Server 2016 (10)

Frage von ahaeuser zum Thema Windows Server ...