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

Per Batch HTML Text auslesen

Frage Entwicklung Batch & Shell

Mitglied: Nohouse303

Nohouse303 (Level 1) - Jetzt verbinden

21.05.2009, aktualisiert 18.10.2012, 8164 Aufrufe, 15 Kommentare

Es gibt keine Probleme: Nur Herausforderungen!

Moin, moin,

trotz des Feiertages lässt mir mein Problem ( keine Ruhe.

Ich habe in einem Verzeichnis viele HTML Dateien.

Ich muss jede via Batch nach einen Text durchsuchen.

HTML Schnipsel:
<span class="Small">M * R+ * * OT * EZMM / / 556 / C * 2 * 5.0 607</span>

Ich muss nach "OT" suchen. Normalerweise steht da "OK".

Falls also "OT" vorhanden ist, brauche ich den Dateinamen oder wenigstens die Info das OT vorhanden ist.

Meine bisherigen versuche waren leider nicht von erfolg gekrönt.

for /f %%i in ('findstr /C:"OK" %HTML_Datei%') do set istda=1

oder

@findStr /v /C:"> D * R+ * * OT * EZMM / / 711 / C * 2 * 5.0 607<" %HTML_Datei% >> A_Talla.txt

Über Eure erneute Unterstützung würde ich mich sehr freuen.

Gruss der Nohouse303
Mitglied: bastla
21.05.2009 um 09:18 Uhr
Hallo Nohouse303!

Vielleicht so:
findstr /i /m /c:"OT" "D:\Verzeichnis\*.html"
bzw wenn's genauer sein muss (* OT *):
findstr /i /m /c:"\* OT \*" "D:\Verzeichnis\*.html"
Grüße
bastla
Bitte warten ..
Mitglied: LotPings
21.05.2009 um 09:24 Uhr
Moin moin Nohouse303.

Deine Beispiele sind nicht sehr erhellend, muss das "OT" jetz in dem Kontext stehen oder ist das egal?

Findstr hat jedenfalls eine Macke bei der Optionen /L wenn der Suchbegriff auf der Kommandozeile steht.
Es wendet dann trotzfdem die RegEx Syntax an wobei mit Leerzeichen getrennte Begriffe alle einzeln zum Treffer führen.

Kommt der Suchbegrif aber aus einer Datei mit der /G:Suche.txt Option passiert dies nicht.

In Verbindung mit der /M Option "nur die Dateinamen ausgeben" hast du schon dein Ergebnis.
01.
@Echo off 
02.
(Echo Was auch immer du suchst)>Suche.txt 
03.
Findstr /M /L /G:Suche.txt *.html
Gruß
LotPings
Bitte warten ..
Mitglied: Nohouse303
21.05.2009 um 13:28 Uhr
Hallo, vielen Dank für die schnellen Antworten.
Leider geht das net.
Findstr hat wohl keine Wirkung bei htm Dateien.
Also es sind htm und nicht wie beschrieben html Dateien.

@LotPings: Normalerweise steht in dem String immer ein OK. Unter gewissen Voraussetzungen steht halt mal ein OT drin. Immer an der selben Stelle!
Gruss der Nohouse303
Bitte warten ..
Mitglied: LotPings
21.05.2009 um 14:06 Uhr
Gaanz ruhig, Wir haben einen Feiertag. Nicht aufregen LotPings. Es tut weh wenn man den Kopf auf die Tischplatte haut. Nicht nochmal machen.

Du hast drei Beispiele, alle 3 durchsuchen Dateien mit der Endung html.

Wenn es diese Dateien nicht gibt kann kener der Befehle etwas finden.

Du könntest jetzt natürlich eins der Beispiele anpassen indem du mutig das l einfach wegnimmst.

Selber denken steht nicht unter Strafe, sondern ist ausdrücklich erwünscht.

Ich weiß jetzt nicht ob ich diesen Tag noch feiern kann und du bist Schuld
Bitte warten ..
Mitglied: Nohouse303
22.05.2009 um 08:31 Uhr
Das tut mir leid, das du dir das so zu Herzen nimmst.

Ich bin zwar kein Profi, aber soviel Grips habe ich schon!

Aufjeden funktionieren eure Beispiele leider nicht!

1. findstr /i /m /c:"OT" "D:\Verzeichnis\*.htm"

2. Findstr /M /L /G:Suche.txt *.htm

Also, kann jemand noch was dazu beitragen ohne sich über mich lustig zu machen.
Bitte warten ..
Mitglied: bastla
22.05.2009 um 11:13 Uhr
Hallo Nohouse303!
Aufjeden funktionieren eure Beispiele leider nicht!
Diese Aussage sollte besser so lauten:
Aufjeden funktionieren eure Beispiele mit meinen Daten leider nicht!
Zumindest liefert bei mir für das folgende Beispiel (als .htm) gespeichert
Ich muss jede via Batch nach einen Text durchsuchen. 
 
HTML Schnipsel: 
<span class="Small">M * R+ * * OT * EZMM / / 556 / C * 2 * 5.0 607</span>
jeder der dargestellten "findstr"-Befehle das gewünschte Ergebnis ...

Kannst Du daher bitte (unter Verwendung der "< code>"-Formatierung - wie in der "Formatierungshilfe" beschrieben oder nach Auswahl von "mit Zitat" für diesen Kommentar ersichtlich) einige relevante Zeilen einer Deiner Dateien posten?

Grüße
bastla
Bitte warten ..
Mitglied: Nohouse303
22.05.2009 um 15:32 Uhr
Hallo Bastla.
hier der Anfang der Datei:

<html xmlns="http://www.w3.org/TR/REC-html40;><head><title>align ..." Protocol</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><link rel="stylesheet" href="css\bbrth.css" type="text/css"/><style type="text/css">
.page {page-break-before:always;}
</style><style MEDIA="SCREEN">
.print {display:none;}
</style><style MEDIA="PRINT">
.screen {display:none;}
</style></head><body background="" text="#000000"><div CLASS="screen"><table border="0" width="100%" cellspacing="0" cellpadding="0"><tr><td width="50%" colspan="2"><nobr><H4 style="margin-bottom:1pt"><span class="HeadlineFour">protokoll</span></H4></nobr></td><td width="50%" colspan="3" rowspan="4" align="right"><img src="logos/vaglogo.gif"/></td></tr><tr><td width="50%" colspan="2"><span class="Standard">Standard (FS)</span></td></tr><tr><td width="50%" colspan="2"><small><span class="Small">
D * R+ * * OT * EZMM / / 711 / C * 2 * 5.0 607</span></small></td></tr><tr><td width="50%" colspan="2">
.......usw.

Ich konnte es bestimmt nicht so umsetzen wie du meintest. Ich hoffe das reicht dir!

Gruss und danke der Nohouse

Ps.: Ich werde meine Formulierungen in Zukunft überdenken und präziser verfassen!
Bitte warten ..
Mitglied: bastla
22.05.2009 um 15:49 Uhr
Hallo Nohouse303!

Dann versuch es mal mit dem folgenden Batch:
01.
@echo off & setlocal 
02.
set "Verzeichnis=D:\Verzeichnis" 
03.
set "Typ=htm" 
04.
set "Liste=D:\Liste.txt" 
05.
 
06.
if exist "%Liste%" del "%Liste%" 
07.
for %%i in ("%Verzeichnis%\*.%Typ%") do type "%%i"|findstr /i /c:"\* OT \*">nul && >>"%Liste%" echo %%i
Grüße
bastla
Bitte warten ..
Mitglied: Nohouse303
22.05.2009 um 17:29 Uhr
Hallo Basta,
du kommst der Sache näher.
Findstr gibt folgenes aus
FINDSTR: Zeile 8 ist zu lang
FINDSTR: Zeile 10 ist zu lang

Bei einer zweiten Datei im Verzeichnis, wo für das OT ein OK drin steht schreibt die Batch neun mal folgendes:
FINDSTR: Zeile 7 ist zu lang

In der Liste.txt stehen beide Dateien, wobei wie gesagt nur in einer OT drin steht.
Hast du noch eine Idee?

Gruss Nohouse303
Bitte warten ..
Mitglied: bastla
22.05.2009 um 17:40 Uhr
Hallo Nohouse303!
du kommst der Sache näher.
Die Information, dass Deine Dateien "UTF-8"-codiert sind, hilft dabei ...

Versuch es mit folgender Zeile 7:
for %%i in ("%Verzeichnis%\*.%Typ%") do type "%%i"|find /i "* OT *">nul && >>"%Liste%" echo %%i
Grüße
bastla
Bitte warten ..
Mitglied: Nohouse303
22.05.2009 um 18:38 Uhr
Absolute Spitzenklasse!

Top. Ich bin mehr als begeistert.

Ich musste nur noch hinter dem OT ein Leerzeichen hinzufügen und jetzt funktionieren Deine Zeilen einwandfrei.

Ein dickes Danke!

Gruss der Nohouse303

PS.: Magst du noch kurz erklären was es mit dem UTF-8 auf sich hat bevor ich den Betrag schliesse!
Bitte warten ..
Mitglied: bastla
22.05.2009 um 19:02 Uhr
Hallo Nohouse303!
Magst du noch kurz erklären was es mit dem UTF-8 auf sich hat
Da es sich bei dieser Codierung um Unicode (siehe zB http://de.wikipedia.org/wiki/UTF-8 ) und nicht um ASCII oder ANSI handelt, kann die CMD-Shell den Inhalt der Dateien nicht unmittelbar verarbeiten - bei der Ausgabe des Dateiinhaltes mit "type" wird allerdings eine automatische Konvertierung vorgenommen, was dem dahintergeschalteten "find" das Durchsuchen dieser Ausgabe ermöglich.

Grüße
bastla
Bitte warten ..
Mitglied: Nohouse303
22.05.2009 um 19:52 Uhr
Danke für die Info.
Ich wünsche ein schönes WE.

Gruss vom Nohouse303
Bitte warten ..
Mitglied: nostream
28.06.2009 um 13:31 Uhr
Hallo und schönen Sonntag,

ich habe hier ein fast identisches Problem:

Ich habe einen Ordner mit über 1000 .html Dateien mit verschiedenen Dateinamen bei denen ich in jeder Datei nach einem bestimmten Tag suchen muss:

<META NAME="description" CONTENT=" hier steht beliebiger Text ">

anschließend müsste ich nur den Teil " hier steht belieber Text " ausgeben und nach einer weiteren HTML-Codestelle im selben .html Dokument suchen:

class="artikelpreis" id="preis" style="font-weight:bold;">30,00 &euro;</span><br>

Hier interessiert nur " 30,00 " also der Betrag in EUR.

In der Ausgabe soll also stehen " hier steht beliebiger Text " dann ein " ; " damit ich die Werte einfach in Excel in 2 Spalten importieren kann, und dann noch " 30,00 ".

Ich hab` jetzt schon mal versucht das obige Script folgendermaßen anzupassen:


@echo off & setlocal
set "Verzeichnis=C:\Dokumente und Einstellungen\nostream\Eigene Dateien\MeineSite\MeinOrdner"
set "Typ=html"
set "Liste=C:\Dokumente und Einstellungen\nostream\Eigene Dateien\MeineSite\Liste.txt"

if exist "%Liste%" del "%Liste%"
for %%i in ("%Verzeichnis%\*.%Typ%") do type "%%i"|findstr /i /c:"\* <META NAME="description" CONTENT= * >\*">nul && >>"%Liste%" echo %%i


Hiermit wollte ich das Tag mit der meta description auslesen, aber das Script bricht mit folgender Meldung ab:

Script: ...\Batch.vbs
Zeile: 1
Zeichen: 1
Fehler: Ungültiges Zeichen
Code: 800A0408
Quelle: Kompilierungsfehler in Microsoft VBScript


Ich wäre euch sehr, sehr dankbar, wenn Ihr das Skript zum laufen bringen würdet, da ansonten alle Infos von Hand aus den über 1000 .html Dateien herauskopiert werden müssen.

Vielen Dank schonmal,
nostream
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

JavaScript
gelöst HTML-Javascript - Auslesen von Formularfeldern (1)

Frage von internet2107 zum Thema JavaScript ...

Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...