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

Links in Textdatei kopieren

Frage Entwicklung Batch & Shell

Mitglied: xtrollra

xtrollra (Level 1) - Jetzt verbinden

02.05.2013, aktualisiert 21:53 Uhr, 1731 Aufrufe, 11 Kommentare

Hallo Leute,
Ich habe eine Textdatei (HTML-Format), die viele Downloadlinks enthält. Name der Datei: dlinks.html

Jetzt möchte ich, dass alle Links in dieser Datei, die die folgenden Bedingungen erfüllen, Zeilenweise in eine neue Textdatei (newlinks.txt) kopiert/geschrieben wird:

Bedingungen:
-beginnt mit http://
-enthält das Wort Photoma
-endet mit .jpg

Ich habe bereits mit findstr probiert, aber da funktionieren die Platzhalter * nicht...

Mein Ansatz:

for /f %%i in ('findstr /c:"*http://*Photoma*.jpg*" dlinks.html') do (echo "%%i">>newlinks.txt)

funktioniert jedoch leider nicht


Könnt ihr mir helfen?
Vielen Dank für eure Hilfe.
Mitglied: bastla
02.05.2013, aktualisiert um 22:28 Uhr
Hallo xtrollra und willkommen im Forum!
Ich habe bereits mit findstr probiert, aber da funktionieren die Platzhalter * nicht...
... vor allem, weil "*" kein Platzhalter ist - kannst Du der Onlinehilfe (aufzurufen mit findstr /?) entnehmen ...

Abgesehen davon kann "findstr" nur zeilenweise verarbeiten - besteht denn Deine Datei aus lauter Zeilen mit je einem Link?

Grüße
bastla
Bitte warten ..
Mitglied: xtrollra
02.05.2013 um 23:05 Uhr
hallo Bastla,
nein, die Datei ist eine HTML-Datei...also HTML-Code mit vielen Zeilen.
Irgendwo gibt es einen Link zu einer Datei und genau diesen Link will ich quasi herauskopieren und in eine Datei schreiben.
Bitte warten ..
Mitglied: Endoro
02.05.2013 um 23:15 Uhr
Hallo xtrollra,

ohne mehr Infos zur "dlinks.html" kann man so nix sagen.

Gruss!
Bitte warten ..
Mitglied: bastla
02.05.2013, aktualisiert 03.05.2013
... aber es ganz schematisch mit einem VBScript der Art
01.
Ein = "D:\dlinks.html" 
02.
Aus = "D:\newlinks.txt" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
T = fso.OpenTextFile(Ein).ReadAll 
06.
 
07.
Set rE = New RegExp 
08.
rE.Pattern = "http://.*Photoma.*\.jpg" 
09.
rE.Global = True 
10.
rE.IgnoreCase = True 
11.
 
12.
For Each Match In rE.Execute(T) 
13.
    Liste = Liste & vbCrLf & Match 
14.
Next 
15.
fso.CreateTextFile(Aus).Write Mid(Liste, 3)
versuchen ...

Grüße
bastla
Bitte warten ..
Mitglied: xtrollra
03.05.2013 um 00:01 Uhr
jaaa, mega vielen Dank bastla ))
Funktioniert genau wie ich es haben will. Klasse.
Geht das ganze auch rein per Batch? also ohne vbs?


@Endoro
Hintergrund ist, dass ich mit einer Batchdatei Updatedateien für ein Programm mit einem Klick downloaden möchte.

Der Downloadlink zu dieser Datei ändert sich aber logischerweise ständig, wenn neue Versionen verfügbar sind. D.h. der Dateiname auf dem Server ändert sich und damit auch der Link dazu.

Deshalb lasse ich per Batch die HTML-Datei zuerst herunterladen, um dann diese zu "verarbeiten" und den Link darin rausfischen...
Hoffe das ist verständlich ;)
Bitte warten ..
Mitglied: bastla
03.05.2013 um 00:11 Uhr
Hallo xtrollra!
Geht das ganze auch rein per Batch? also ohne vbs?
Grundsätzlich möglich, aber mühsam - zur Not lässt sich das VBScript aber durch einen Batch erzeugen und ausführen, etwa so:
01.
set "Ein=D:\dlinks.html" 
02.
set "Aus=D:\newlinks.txt" 
03.
 
04.
set "G=%temp%\GetLinks.vbs" 
05.
 >"%G%" echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%Ein%").ReadAll 
06.
>>"%G%" echo Set rE=New RegExp:rE.Pattern="http://.*Photoma.*\.jpg":rE.Global=True:rE.IgnoreCase=True 
07.
>>"%G%" echo For Each Match In rE.Execute(T):Liste=Liste^&vbCrLf^&Match:Next:fso.CreateTextFile("%Aus%").Write Mid(Liste,3) 
08.
 
09.
cscript //nologo "%G%"
Grüße
bastla
Bitte warten ..
Mitglied: Endoro
03.05.2013 um 07:40 Uhr
Zitat von xtrollra:
Geht das ganze auch rein per Batch? also ohne vbs?


Sicher nicht ohne mehr Info

Gruss!
Bitte warten ..
Mitglied: micneu
04.05.2013 um 11:23 Uhr
ich könnte dir eine lösung in powershell anbieten. oder in awk, perl.
Bitte warten ..
Mitglied: bastla
04.05.2013 um 11:32 Uhr
@ micneu
awk, perl
Wenn's noch nicht einmal VBS sein soll?

Grüße
bastla
Bitte warten ..
Mitglied: xtrollra
04.05.2013 um 17:29 Uhr
@micneu
vielen Dank für deine Hilfe, aber mit bastla's VBS-Skript funktionierts super.

ich habe aber noch ein Problem, für das ich noch keine gute Lösung gefunden habe:
Die Batch soll die 3. Zeile (oder x-te) einer Textdatei als Variable speichern.

01.
for /f "tokens=* delims= " %%a in (Datei.txt) do ( 
02.
	set /a N+=1 
03.
	set v!N!=%%a 
04.
	set vLineThree=!v3! 
05.
	)
Leider durchläuft dieser Code unnötig jede Zeile der ganzen Textdatei, was Zeit usw. kostet.
Ist es möglich gezielt einfach die x. Zeile auszulesen?
Danke für Eure Hilfe
Bitte warten ..
Mitglied: bastla
04.05.2013, aktualisiert um 17:43 Uhr
Hallo xtrollra!

Etwa so:
01.
set "Line=3" 
02.
for /f "tokens=1* delims=]" %%i in ('find /n /v "§§§§§§"^<Datei.txt^|findstr /b "\[%Line%\]"') do set "vLineThree=%%j" 
03.
if not defined vLineThree echo Zeile %Line% leer oder nicht vorhanden!
- oder natürlich per VBS ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows Server
gelöst EXE Datei per GPO auf Desktop für alle User kopieren (8)

Frage von haiflosse zum Thema Windows Server ...

Batch & Shell
gelöst Daten via Aufgabenplanung auf ein SMB Ziel kopieren (8)

Frage von eBBeL87 zum Thema Batch & Shell ...

Batch & Shell
gelöst Verzeichniss überwachen Datei kopieren und umbenennen (6)

Frage von fischle63 zum Thema Batch & Shell ...

Windows XP
Remoteverbindung von Win10 auf WinXp lässt kein kopieren zu (3)

Frage von WinLiCLI zum Thema Windows XP ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(2)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (16)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Cloud-Dienste
gelöst Bitcoins minen über Nacht? (16)

Frage von 1410640014 zum Thema Cloud-Dienste ...