Unbekannte Zeichenkette aus txt mit Zeilenangabe auslesen
Hallo Community 
Nach über 4 Stunden herum probieren habe ich es aufgegeben und muss hier um Rat bitten...
Ich möchte mittels Batch Datei den Track eines Internet-Radios aus dem Quelltext der Seite kopieren und lokal in eine Textdatei schreiben,
um mir den Titel zu einem späteren Zeitpunkt anhören zu können.
In Verbindung damit habe ich mir den wget "Befehl" besorgt.
Was ich fest sagen kann:
- Der Track steht immer in der Zeile 204 (Bsp: DJ SHOG - Stranger On This Planet)
- Die Zeile sieht immer so aus (abgesehen von der Nummer hinter "release/", daher fällt eine Stringmanipulation meiner Meinung nach flach)
Mein momentaner Quelltext sieht so aus:
Alles unter ":: Track extrahieren" ist kompletter Schwachsinn, so wie ich das sehe...
Und ":: Zeile suchen" fällt denke ich weg, insofern man die Zeile direkt angeben kann. (Nach #FFFFFF wurde gesucht, da dies nur in dieser Track-Zeile verwendet wird)
Ich bin mit meinem Latein am Ende und hoffe Ihr könnt mir dabei helfen
Nach über 4 Stunden herum probieren habe ich es aufgegeben und muss hier um Rat bitten...
Ich möchte mittels Batch Datei den Track eines Internet-Radios aus dem Quelltext der Seite kopieren und lokal in eine Textdatei schreiben,
um mir den Titel zu einem späteren Zeitpunkt anhören zu können.
In Verbindung damit habe ich mir den wget "Befehl" besorgt.
Was ich fest sagen kann:
- Der Track steht immer in der Zeile 204 (Bsp: DJ SHOG - Stranger On This Planet)
- Die Zeile sieht immer so aus (abgesehen von der Nummer hinter "release/", daher fällt eine Stringmanipulation meiner Meinung nach flach)
<a href="/release/4074" style="color: #FFFFFF">DJ SHOG - Stranger On This Planet</a>
Mein momentaner Quelltext sieht so aus:
@echo off
setlocal enableDelayedExpansion
:: Wenn vorheriger Quelltext vorhanden, dann löschen
IF EXIST A:\TechnoBaseTrack\index.html (DEL A:\TechnoBaseTrack\index.html)
:: Quelltext auslesen
wget -P A:\TechnoBaseTrack http://www.technobase.fm/
:: Zeile suchen
FINDSTR #FFFFFF A:\TechnoBaseTrack\index.html>=A:\TechnoBaseTrack\line.txt
:: Track extrahieren
FOR /F "delims=" %%s in (FINDSTR #FFFFFF A:\TechnoBaseTrack\line.txt) do @set track=%%s !track:*>=!
@ECHO %track%>>A:\TechnoBaseTrack\line.txt
Alles unter ":: Track extrahieren" ist kompletter Schwachsinn, so wie ich das sehe...
Und ":: Zeile suchen" fällt denke ich weg, insofern man die Zeile direkt angeben kann. (Nach #FFFFFF wurde gesucht, da dies nur in dieser Track-Zeile verwendet wird)
Ich bin mit meinem Latein am Ende und hoffe Ihr könnt mir dabei helfen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 256384
Url: https://administrator.de/forum/unbekannte-zeichenkette-aus-txt-mit-zeilenangabe-auslesen-256384.html
Ausgedruckt am: 07.04.2025 um 08:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo IForever, Willkommen auf Administrator.de!
Mach's doch mit Powershell, da ist das Gedöns ein Einzeiler ohne Zusatztools
oder wenn's unbedingt Batch sein muss, direkt ohne Umweg über eine Textdatei mit curl für Windows in Batch (Die for-Schleifen-Methode kannst du aber auch auf dein HTML-File und wget anwenden)
Grüße Uwe
Mach's doch mit Powershell, da ist das Gedöns ein Einzeiler ohne Zusatztools
[regex]::Match((New-Object System.Net.WebClient).DownloadString("http://www.technobase.fm"),'<a href="/release/.*?" style="color: #FFFFFF">([^<]+)</a>').Groups[1].Value | out-file "A:\TechnoBaseTrack\line.txt"
::Codepage ändern für Umlaute im Titel
chcp 1252
:: Titel extrahieren ,verwendet 'curl'
for /f "tokens=3 delims=^>^<" %%a in ('curl -s http://www.technobase.fm/ ^| findstr /r /c:"/release/.*"') DO @echo %%a>"A:\TechnoBaseTrack\line.txt"
::Codepage wieder zurücksetzen
chcp 850
Hey,
nach einer Zeilennummer kann auch gesucht werden:
Gruss, Endoro
nach einer Zeilennummer kann auch gesucht werden:
@echo off &setlocal disabledelayedexpansion
for /f "tokens=1*delims=:" %%a in ('wget -q -O- "http://www.technobase.fm/" ^|findstr /n "^"') do if %%a==204 set "TrackRaw=%%~b"
for /f "tokens=3delims=<>" %%a in ("%TrackRaw%") do >>"tracks.log" echo %%~a