subrosa20
Goto Top

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

Content-Key: 207179

Url: https://administrator.de/contentid/207179

Printed on: April 25, 2024 at 09:04 o'clock

Member: bastla
bastla May 28, 2013 updated at 19:02:51 (UTC)
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
Member: Endoro
Endoro May 28, 2013 updated at 22:41:26 (UTC)
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!
Member: colinardo
colinardo May 29, 2013 updated at 08:24:50 (UTC)
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