Per Batch HTML Text auslesen
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:
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.
oder
Über Eure erneute Unterstützung würde ich mich sehr freuen.
Gruss der Nohouse303
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 116517
Url: https://administrator.de/contentid/116517
Ausgedruckt am: 20.11.2024 um 03:11 Uhr
15 Kommentare
Neuester Kommentar
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.
Gruß
LotPings
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.
@Echo off
(Echo Was auch immer du suchst)>Suche.txt
Findstr /M /L /G:Suche.txt *.html
Gruß
LotPings
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
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
Hallo Nohouse303!
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
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) gespeichertIch muss jede via Batch nach einen Text durchsuchen.
HTML Schnipsel:
<span class="Small">M * R+ * * OT * EZMM / / 556 / C * 2 * 5.0 607</span>
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
Hallo Nohouse303!
Dann versuch es mal mit dem folgenden Batch:
Grüße
bastla
Dann versuch es mal mit dem folgenden Batch:
@echo off & setlocal
set "Verzeichnis=D:\Verzeichnis"
set "Typ=htm"
set "Liste=D:\Liste.txt"
if exist "%Liste%" del "%Liste%"
for %%i in ("%Verzeichnis%\*.%Typ%") do type "%%i"|findstr /i /c:"\* OT \*">nul && >>"%Liste%" echo %%i
bastla
Hallo Nohouse303!
Grüße
bastla
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
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:
anschließend müsste ich nur den Teil " hier steht belieber Text " ausgeben und nach einer weiteren HTML-Codestelle im selben .html Dokument suchen:
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:
Hiermit wollte ich das Tag mit der meta description auslesen, aber das Script bricht mit folgender Meldung ab:
Script:
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
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 €</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
Kommentar verschoben: Per Batch bestimmten Text aus mehreren .html Dateien gleichzeitig auslesen
bastla
bastla