subrosa20

Bestimtme Links aus Quelltext in txt speichern.

Hallo,
da ich nun nach einer echten Ewigkeit noch keine Lösung gefunden habe, bitte ich hier mal um Hilfe!

Ich habe eine .txt (a.txt) datei die einen Ursprünglichen html-Quelltext enthält. Aus dieser Datei sollen nun mittels Batch alle Links, die mit "http://www.webseite.de/six/src/" beginnen ausgelesen und in eine neue Textdatei gespeichert werden (1 Link Pro Zeile). Einige Beispiele wären:

http://www.webseite.de/six/src/135255765397.jpg
http://www.webseite.de/six/src/135257344398.jpg
http://www.webseite.de/six/src/135255799129.jpg

Sprich: Der Link bleibt gleich, bis auf die Zahl.


Die Links liegen alle auf folgende Weise in der Ausgangsdatei vor:

... <a target="_blank" href="/out.php?url=http://www.webseite.de/six/src/135255765397.jpg;>; <span id ...


Nochmal im kurzdurchlauf:

Textdatei auslesen und das was zwischen

" <a target="_blank" href="/out.php?url= "

und

" "> <span id ... "

steht in eine neue datei kopieren. -> b.txt




Mit

findstr /c:"http://www.webseite.de/six/src/" a.txt > b.txt

konnte ich bereits alle zeilen die einen Link enthalten wie gewünscht auslesen. Aber den Rest bekomme ich leider nicht weg. Gibt es einfachere Lösungswege IN BATCH?


Danke und liebe Grüße,
Thomas. face-smile
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 207179

Url: https://administrator.de/forum/bestimtme-links-aus-quelltext-in-txt-speichern-207179.html

Ausgedruckt am: 05.06.2025 um 23:06 Uhr

bastla
bastla 28.05.2013 aktualisiert um 21:02:51 Uhr
Goto Top
Hallo Subrosa20 und willkommen im Forum!

Im einfachsten Fall etwa so:
@echo off & setlocal
del b.txt 2>nul
for /f "delims=" %%i in ('findstr /c:"http://www.webseite.de/six/src/" a.txt') do set "Zeile=%%i" & call :ProcessLine  
goto :eof

:ProcessLine
for /f "delims==; >" %%a in ("%Zeile:*url=%") do >>b.txt echo %%a  
goto :eof
Da Deiner Darstellung nicht so ganz genau zu entnehmen ist, ob nach dem Link nun ein Semikolon, ein Leerzeichen oder gleich ein ">" folgt, habe ich alle 3 Möglichkeiten berücksichtigt ...

Grüße
bastla
Endoro
Endoro 28.05.2013, aktualisiert am 29.05.2013 um 00:41:26 Uhr
Goto Top
Hallo Subrosa20,

ein Vorschlag mit GNU sed:

@echo off&setlocal
(for /f %%i in (
'sed "s/.*=\(.*\);.;.*/\1/" file'  
) do (
echo(%%i
))>out.txt

Gruss!
colinardo
colinardo 29.05.2013 aktualisiert um 10:24:50 Uhr
Goto Top
und für die Powershell-Fraktion:
function Get-Matches($Pattern,$groupNumber = 0) {
  begin { $regex = New-Object Regex($pattern) }
  process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value } }
}

$Textdatei = "D:\a.txt"  
get-content $Textdatei | Get-Matches "(?i)\bhttp://www.webseite.de/six/src/[0-9]*\.jpg"  

face-wink