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

Unbekannte Zeichenkette aus txt mit Zeilenangabe auslesen

Frage Entwicklung Batch & Shell

Mitglied: IForever

IForever (Level 1) - Jetzt verbinden

01.12.2014, aktualisiert 03.12.2014, 900 Aufrufe, 4 Kommentare, 1 Danke

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)
<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
Mitglied: colinardo
01.12.2014, aktualisiert um 22:31 Uhr
Hallo IForever, Willkommen auf Administrator.de!
Mach's doch mit Powershell, da ist das Gedöns ein Einzeiler ohne Zusatztools
01.
[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"
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)
01.
::Codepage ändern für Umlaute im Titel 
02.
chcp 1252 
03.
 
04.
:: Titel extrahieren ,verwendet 'curl' 
05.
for /f "tokens=3 delims=^>^<" %%a in ('curl -s http://www.technobase.fm/ ^| findstr /r /c:"/release/.*"') DO @echo %%a>"A:\TechnoBaseTrack\line.txt" 
06.
 
07.
::Codepage wieder zurücksetzen 
08.
chcp 850
Grüße Uwe
Bitte warten ..
Mitglied: Endoro
LÖSUNG 02.12.2014, aktualisiert 03.12.2014
Hey,
nach einer Zeilennummer kann auch gesucht werden:
01.
@echo off &setlocal disabledelayedexpansion 
02.
for /f "tokens=1*delims=:" %%a in ('wget -q -O- "http://www.technobase.fm/" ^|findstr /n "^"') do if %%a==204 set "TrackRaw=%%~b" 
03.
for /f "tokens=3delims=<>" %%a in ("%TrackRaw%") do >>"tracks.log" echo %%~a
Gruss, Endoro
Bitte warten ..
Mitglied: IForever
03.12.2014 um 16:34 Uhr
Hallo Uwe,

danke für deinen Vorschlag

Powershell schließe ich vorerst einmal aus, da ich in diesem Thema noch nie etwas gearbeitet habe.
Die Lösung mit dem curl habe ich bis jetzt nur einmal überflogen, scheint aber zu funktionieren.
Da ich mir das mit dem curl noch einmal anschauen muss wird das wohl erst morgen, bzw. Freitag Abend geschehen, ich melde mich dann noch einmal, sobald ich deinen Code getestet habe.

Gruß
Chris
Bitte warten ..
Mitglied: IForever
03.12.2014, aktualisiert um 17:49 Uhr
Hallo Endoro,

auch dir ein großes Dankeschön für den Vorschlag

Auf das einfach "Copy&Paste" habe ich keine Lösung gefunden, ich gehe mal davon aus, dass ich den Code noch einmal überfliegen muss, auch das werde ich wohl erst morgen bzw. Freitag Abend schaffen.

Gruß
Chris

EDIT:

Aus mir unerklärlichen Gründen hat der Code nun doch funktioniert Oo
Vielleicht ist mir beim ersten mal Copy-Paste ein Fehler unterlaufen ....

Vielen Dank für die Lösung, Endoro!
Morgen mache ich mich daran, den Code zu verstehen ^^

Gruß
Chris
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...