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

Platzhalter in Batch mit gesamten string

Frage Entwicklung Batch & Shell

Mitglied: rafii6311

rafii6311 (Level 1) - Jetzt verbinden

11.05.2011, aktualisiert 18.10.2012, 6275 Aufrufe, 45 Kommentare

Ich hab folgendes Problem:

wie kann man mit batch (oder einer anderen scriptsprache)
aus einer datei zB html den "satz" www. * .mp4 raussuchen, wobei * der platzhalter ist?
also dass man aus einer beliebigen html datei den GESAMTEN link zu einer gewuenschten Datei,
hier mp4, raussucht?
ist das mit batch moeglich?

Mit freundlichen Grüßen Rafii
45 Antworten
Mitglied: 60730
11.05.2011 um 18:49 Uhr
Ich hab folgendes Problem:

  • ich krieg keinen Gruß hin
  • die Suchfunktion funktioniert bei mir nicht
  • ich sehe die Anleitungen nicht, die sich im Bereich Batch & Shell befinden

das sind ja 3 Probleme auf einmal...
sorry, aber wenns so ist, dann kann und will man wohl nicht helfen.

Platzhalter in Batch mit gesamten string
mir platzt da die Hutschnur egal ob mit oder ohne Stringtanga
Bitte warten ..
Mitglied: bastla
11.05.2011 um 18:51 Uhr
Hallo rafii6311 (ja, hier sind Begrüßungen üblich) und willkommen im Forum!

Kannst Du Dein Vorhaben anhand eines konkreten Beispieles etwas deutlicher darstellen - insbesondere auch hinsichtlich der Struktur (so es denn eine gibt) der zu durchsuchenden Datei?

BTW: Was ist denn der Zweck der Aktion?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.05.2011 um 18:53 Uhr
Ist mit Batchbefehlen nicht möglich, aber das Windows-Utility "FindStr.exe" kann mit solchen Anforderungen umgehen.

Ich hab keine Probleme damit.
Bitte warten ..
Mitglied: dog
11.05.2011 um 18:54 Uhr
01.
#!/usr/bin/env perl  
02.
 
03.
use strict; 
04.
use warnings; 
05.
use Data::Dumper; 
06.
 
07.
my $str= 'bla bla www.seite.com/lala.mp4 bla blax www.seite2.com/lulu.mp4 bla blabla'; 
08.
 
09.
while($str =~ /(www\..*?\.mp4)/g) { 
10.
	print Dumper($1); 
11.
	 
12.
}
Bitte warten ..
Mitglied: rafii6311
11.05.2011 um 18:55 Uhr
Es tut mir leid, wenn ihnen "Mit freundlichen Grüßen" als Gruss nicht reicht, mir wuerde es halt reichen, deswegen schrieb ich es auch.
Die Suchfunktion funkioniert bei mir sehr gut, nur leide finde ich nichts, was mich bei meinem Problem weiterhilft.


Mit freundlichen Gruessen Rafii
Bitte warten ..
Mitglied: rafii6311
11.05.2011 um 19:01 Uhr
Ich hab vor einen html spider (rausfummeln von Dateien aus HTML quellcodes) zu schreiben.
Bsp:

findstr http://*jpg index.html >log.txt
bei mir wird da nur leider immer eine leere log.txt geschrieben, wobei aber der string ".jpg" in der datei index.html vorhanden ist!


Die html Datei wuerde ich dann mit dem Programm wget.exe herunterladen und local durchsuchen.

Danke fuer die bisherigen Antworten


Entschuldigung wegen meinem unhoeflichen auftreten, aber ich hab es voll verplant mich vorzustellen ^^''
ich war schonmal bei administrator.de angemeldet, allerdings hab ich meinen Benutzernamen und das dazugehoerige
Emailkonto verlegt.
Bitte warten ..
Mitglied: Skyemugen
11.05.2011 um 19:31 Uhr
Aloha,

also erstens:
  • findstr /?

zweitens:
  • vergiss die "Zollzeichen" bitte nicht um ein derartige zu suchende Gruppierung

greetz André

P.S.: an unsere Batch-Könige mal eine Frage diesbezüglich nebenbei:
Schnellübersicht regulärer Ausdrücke: 
  \x        Escape: direkte Verwendung eines Metazeichens x 
  \<xyz     Wortposition: am Anfang des Wortes 
  xyz\>     Wortposition: am Ende des Wortes
Kann mir dafür mal bitte jemand ein Beispiel nennen? Entweder bin ich zu blöde, das zu verstehen oder einfach nur zu dusselig es korrekt umzusetzen *lach*
Bitte warten ..
Mitglied: bastla
11.05.2011 um 19:53 Uhr
Hallo Skyemugen!

Here we go:
D:\>type Text.txt 
Test ein 
ein Test mit $-Zeichen 
mein Test 
einen Test 
 
D:\>findstr "ein" Text.txt 
Test ein 
ein Test mit $-Zeichen 
mein Test 
einen Test 
 
D:\>findstr "\<ein" Text.txt 
Test ein 
ein Test mit $-Zeichen 
einen Test 
 
D:\>findstr "ein\>" Text.txt 
Test ein 
ein Test mit $-Zeichen 
mein Test 
 
D:\>findstr "$" Text.txt 
Test ein 
ein Test mit $-Zeichen 
mein Test 
einen Test 
 
D:\>findstr "\$" Text.txt 
ein Test mit $-Zeichen 
 
D:\>findstr "ein$" Text.txt 
Test ein 
 
D:\>findstr "^ein" Text.txt 
ein Test mit $-Zeichen 
einen Test
Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.05.2011 um 19:56 Uhr
Moin Skyemugen,

welche Verständnisprobleme hast du denn - steht doch alles da....

Beispiel:

findstr /i /r "Http:\\\\.*\.mp4" rafisIndex.html
-> mit /i sag ich "IgnoreKleinGrossPISAundSo"
-> mit /r sag ich "mach's mir regulär, Sweetie"
-> Suchen soll er den festen String "http:\\" plus irgendwas gefolgt von ".mp4"
Dabei sind die Backslashes "Zeichen mit besonderer Bedeutung", d.h. oben in der zitierten Hilfe "Metazeichen", die ich "maskieren" muss.
Deshalb wird aus einem "\" ein maskierter"\\", us einem Punkt "." ein maskierter Punkt "\."

Wenn das "mp4 nur am Ende der Zeile stehen dürfte, dann:
findstr /i /r "Http:\\\\.*\.mp4$" rafisIndex.html

Beispiele für Wortanfang und Wortende passen hier jetzt nicht, funktionieren aber genau wie Zeilenende/Zeilenanfang.
Sind nur andere Symbole.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
11.05.2011 um 20:07 Uhr
@Biber
Ist /r nicht ohnehin Default?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
11.05.2011 um 20:36 Uhr
Moin bastla,

Zitat von bastla:
@Biber
Ist /r nicht ohnehin Default?
Doch, und ich weiss im Moment auch gar nicht mehr, wo ich es mir angewöhnt habe, immer sicherheitshalber ""mach's mir regulär, Sweetie" zu sagen....

Grüße
Biber
Bitte warten ..
Mitglied: rafii6311
11.05.2011 um 20:39 Uhr
ich bin glaub ich bin irgendwie zu bloed O_o
bei mir wird immernoch, wenn ich den von Biber gegebenen code "findstr /i /r "Http:\\\\.*\.mp4$" rafisIndex.html" benutze "nichts" ausgegeben!

Trotzdem vielen Dank fuer die bisherige Anstrengung
Bitte warten ..
Mitglied: Biber
11.05.2011 um 20:56 Uhr
Moin rafii6311,

lass das "$" im Suchstring weg, sonst MUSS das "mp4" am Zeilenende stehen.

Grüße
Biber
Bitte warten ..
Mitglied: rafii6311
11.05.2011 um 21:03 Uhr
ist mir auch grad aufgefallen
im quellcode der html steht nirgens das .mp4 am ende der zeile, es ist meist (immer) ein "> dahinter
aber wie komm ich jetzt NUR an den link, OHNE dem "> ?

ps: bei mir klappts immernoch nicht T_T *am verzweifeln sei*

ich kann leider morgen erst wieder online, also bis dann

Schoene gruesse
Rafi
Bitte warten ..
Mitglied: bastla
11.05.2011 um 21:35 Uhr
Hallo rafii6311!

Vielleicht wird's ja besser, wenn Du nach dem "Http:" doch ganz gewöhnliche Slashes (2 Stück sollten genügen ) verwendest ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
11.05.2011 um 21:48 Uhr
Aloha bastla!

danke für das ausführliche Beispiel, ich sehe schon: (und das geht jetzt auch als Antwort an den Biber)
Ich habe die Sachen anders interpretiert, sprich: hat zwar bei mir schon funktioniert, nur dachte ich, dass etwas anderes ausgegeben würde (haha) - aber das mit dem $-Zeichen ist ein gutes Beispiel gewesen, wer weiß, wann man die Dinge in der Art doch mal benötigt.

Hauptsache ich muss nicht dumm sterben und kann ohne Kopfzerbrechen gleich schlafen gehen.

greetz & gotoute Nacht

André
Bitte warten ..
Mitglied: Biber
11.05.2011 um 22:18 Uhr
*lach*

Zitat von bastla:
Hallo rafii6311!

Vielleicht wird's ja besser, wenn Du nach dem "Http:" doch ganz gewöhnliche Slashes (2 Stück sollten
genügen ) verwendest ...
Sorry, rafii6311 und THX@bastla, da hab ich gerade vor mich hingeschnarcht.

mein Fehler, ich sollte auch mal wieder ausschlafen.

Schicht für heute.
Grüße
Biber
Bitte warten ..
Mitglied: 60730
11.05.2011 um 22:30 Uhr
moin,
Zitat von rafii6311:
Es tut mir leid, wenn ihnen "Mit freundlichen Grüßen" als Gruss nicht reicht, mir wuerde es halt reichen, deswegen schrieb ich es auch.
  • Mit freundlichen Grüßen ist doch nur eine abkürzung und ein Ohrwurm von den Fantas...
Die Suchfunktion funkioniert bei mir sehr gut, nur leide finde ich nichts, was mich bei meinem Problem weiterhilft.
  • Was würde passieren, wenn du auf meinen Nick klicken würdest, dort nach den von mir geschrieben Anleitungen suchen würdest und die zuletzt geschriebene ansehen?
Mit freundlichen Gruessen Rafii

geht doch
Gruß zurück
Bitte warten ..
Mitglied: Friemler
12.05.2011 um 05:02 Uhr
Hallo rafii6311,

mit Batchscript lässt sich garantiert auch eine Lösung für Dein Problem finden, aber ich möchte hier mal eine Lösung mit AWK bzw. GAWK (GNU AWK) vorschlagen. Damit ist dann nur noch ein Einzeiler nötig, der auch für Leute, die sich mit AWK nicht auskennen, verständlich sein sollte.

gawk "{line = tolower($0); do {match(line, /http:\/\/[^<>]*\.mp4/); if (RSTART != 0) print substr(line, RSTART, RLENGTH); line = substr(line, RSTART+RLENGTH)} while (RSTART != 0)}" rafisIndex.html
Die Kommandozeile enthält ein AWK-Script, hier nochmal in aufgelöster Form:
01.
02.
  line = tolower($0) 
03.
   
04.
  do 
05.
  { match(line, /http:\/\/[^<>]*\.mp4/) 
06.
    if (RSTART != 0) 
07.
    { print substr(line, RSTART, RLENGTH) 
08.
      line = substr(line, RSTART+RLENGTH) 
09.
10.
  } while (RSTART != 0) 
11.
}
Wenn man das Script z.B. als FilterMusicLinks.awk speichert, kann es auch mit
gawk -f FilterMusicLinks.awk rafisIndex.html
gestartet werden.

Der Code wird für jede Zeile der Eingabedatei ausgeführt. Der komplette Inhalt einer Zeile ist über die interne Variable $0 verfügbar.

Zeile 5 enthält einen regulären Ausdruck, der bei (G)AWK in / eingeschlossen werden muss. http:\/\/[^<>]*\.mp4 bedeutet, das zwischen http:// und .mp4 alles außer den Zeichen < und > in beliebiger Länge vorkommen darf. Nur so kann das Script auch das mehrfache Auftreten von Links innerhalb einer Zeile korrekt verarbeiten, da somit das > als Endemarkierung für einen Link erkannt wird. Die Zeichen / und der Punkt müssen mit \ escaped werden.

Der Aufruf von MATCH setzt die Variablen RSTART und RLENGTH. Der Fund wird anhand dieser Werte als Teilstring der gesamten Zeile ausgegeben. Dann werden alle Zeichen vom Anfang der Zeile bis zum letzten Zeichen der Fundstelle abgeschnitten und erneut gesucht. Es wird solange weitergesucht, bis MATCH die Variable RSTART auf 0 setzt (kein Fund).

GAWK in einer Version für Windows, die auch ohne Cygwin läuft, gibt es hier (zum letzten Drittel der Seite scrollen). Dort ist auch eine ausgezeichnete Doku als PDF erhältlich ("GAWK: Effective AWK Programming" von Arnold D. Robbins, 364 S.) und zusätzlich noch PGAWK, mit dem sich AWK-Scripte recht gut debuggen lassen. Als Krönung gibt es dann noch AWKA, mit dem sich aus AWK-Scripten compilierbarer C-Code erzeugen lässt.

Gruß
Friemler
Bitte warten ..
Mitglied: rafii6311
12.05.2011 um 21:53 Uhr
VIELEN DANK Friemler!!!
Es klappt!

wie kann ich jetzt die links noch in eine txt datei scheiben?
habs selbst herausgefunden.
Hab einfach ans ende >links.txt gesetzt

vieeeleen dank fuer euere hilfe :D



@Biber und bastla
ich glaub irgendwie dass das mit batch nicht moeglich ist,
ich bekomm immer fehlermeldungen, und in html gibts ja nicht wirklich nen zeilenumbruch,
damit kann findst glaubich nicht umgeben. trotzdem danke fuer die Anstrengungen!
Bitte warten ..
Mitglied: Friemler
12.05.2011 um 22:18 Uhr
Hallo rafi,

freut mich. Aber wo bleibt dann der grüne Haken?

BTW: Das ließe sich bestimmt mit Batch lösen, man muss nur ein paar Verrenkungen machen. VBScript ginge auch (wäre außerdem ein Bordmittel), der Code wäre aber sperriger als AWK.

Gruß
Bitte warten ..
Mitglied: bastla
12.05.2011 um 22:21 Uhr
@Friemler
der Code wäre aber sperriger als AWK.
Gar nicht mal so schlimm, oder?
01.
Set rE = New RegExp 
02.
rE.Pattern = "http://[^<>]*\.mp4" 
03.
rE.IgnoreCase = True 
04.
rE.Global = True 
05.
For Each Match In rE.Execute(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll) 
06.
    WScript.Echo Match 
07.
Next
Sinnvoller Weise wäre das Script über "cscript" aufzurufen - Beispiel:
cscript //nologo GetMP4.vbs rafisIndex.html>links.txt
Grüße
bastla

P.S.: @rafii6311
Angestrengt haben sich weder Biber noch ich ...
Bitte warten ..
Mitglied: Friemler
12.05.2011 um 22:29 Uhr
@bastla,

nee, nicht schlimm, aber sperriger (RegExp-Objekt erzeugen, Properties setzen, noch'n Objekt, Textdatei öffnen... und noch 'ne Bandwurmzeile produzieren, damit man unter 10 Zeilen bleibt ).

UNIX-Tools sind manchmal besser und eleganter, die Jungs haben ja auch 10 Jahre mehr Erfahrung, evtl. kann man sogar sagen 20 Jahre, denn COMMAND.COM war als Shell 'ne Lachnummer.

Gruß
Bitte warten ..
Mitglied: bastla
12.05.2011 um 22:32 Uhr
@Friemler
UNIX-Tools sind manchmal besser und eleganter
Schon klar; aber, wie Du schon erwähnt hast, steht VBS eben so gut wie immer zur Verfügung ...
ne Bandwurmzeile produzieren, damit man unter 10 Zeilen bleibt
Warum sollte ich für die einmalige Verwendung Variablen erzeugen?

Übrigens: Wenn die Zeilenzahl wirklich ein Thema wäre, hätte ich auch einen Oneliner (mit nicht ganz schlanken 223 Zeichen ) draus machen können ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
12.05.2011 um 23:40 Uhr
@Friemler

Und meine Meinung zu dem Thema "Welches Werkzeug?" habe ich schon mehrfach gepostet.

  • immer das, mit dem du auch umgehen kannst
  • möglichst eines, dass "überall" (in verschiedenen OS- und Sprachversionen DE/EN/FR..) und "für jeden" (ohne Admin-Rechte) und
  • möglichst ohne Zusatz-Tools oder zumindest ohne Zusatzinstallationen verfügbar ist.

Hier in diesem Beispiel sehe ich natürlich die Mächtigkeit und den Charme deiner AWK-Lösung, keine Frage.
Wenn allerdings rafi sich zu der einen AWK-Zeile noch eine DIN A4-Seite Notizen abspeichern muss,
damit er sich in drei Monaten an eine der üblichen kleinen Wartungsanpassungen herantraut...
--> dann würde ich natürlich das als Kriterium für die richtige Werkzeugauswahl mit heranziehen.

Wo ich mich bastla voll und ganz anschliesse... das vorrangige Ziel sollte nicht sein, mit möglichst wenig Zeilen/Zeichen fertig zu werden.

Jede Batchdatei (oder auch jede 0-Byte-Datei) belegt auf einem Durchschnittsrechner 16.384 Byte... also was soll's.
Platz sparen lässt sich eher, wenn keine Batch/Skriptdatei geschrieben, sondern direkt vom CMD-Prompt etwas abgeschickt wird.

Grüße
Biber
Bitte warten ..
Mitglied: Friemler
13.05.2011 um 00:04 Uhr
Hallo Biber,

ich gebe Dir in allen Punkten recht. Das war auch das erste mal ([EDIT] Halt, stimmt nicht, ich habe vor ein paar Tagen TEE empfohlen [/EDIT]), dass ich auf ein UNIX-Tool verwiesen habe.

Von UNIX-Tools, für die man Cygwin installieren muss, halte ich auch nichts.

Hier erschien mir ein UNIX-Tool als Möglichkeit, da der TO das nur für sich privat benötigte. Jemandem, der sowas im Auftrag eines anderen realisieren will, also auf einem Rechner/mehreren Rechnern, die nicht unter seiner Kontrolle stehen, hätte ich so eine Lösung nicht empfohlen.

Dass ich kein "Zeilenanzahlfuchser" bin, kann man glaube ich an den Scripten sehen, die ich schon veröffentlicht habe. Lieber ein paar (Leer-)Zeilen mehr und dafür die Lesbarkeit gesteigert. Das war im Dialog mit bastla nur ein flappsiger Spruch .

Was die DIN A4-Seite betrifft... nichts gegen den TO, aber anhand seiner Frage "Wie kann ich jetzt die links noch in eine txt datei schreiben?" (die er sich ja dann doch noch selbst beantworten konnte, weil er sich anscheinend Mühe macht), vermute ich mal, dass er die DIN A4-Seite auch für bastla's VBS-Lösung braucht. Und sich die Infos (so nebenbei) noch selbst zusammensuchen müsste .

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
13.05.2011 um 08:00 Uhr
@Friemler
Und sich die Infos (so nebenbei) noch selbst zusammensuchen müsste
Hast Du doch für ihn (uns) gemacht - die VBS-Variante ist ja nur die Codierung Deines RegEx in einer anderen Sprache ...

Grüße
bastla
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 14:15 Uhr
joa also so richtig geloest ist mein problem ja nicht ^^
aber mit der methode ueber gawk bin ich auch zufrieden :D
Bitte warten ..
Mitglied: Friemler
13.05.2011 um 14:35 Uhr
Hallo rafii,

Zitat von rafii6311:
joa also so richtig geloest ist mein problem ja nicht

Warum das?

Gruß
Friemler
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 15:46 Uhr
weil ich eine reine batch loesung wollte :P
ist aber schon ok.


Ich will ich mal was lustiges erzaehlen (fuer leute die gern schadenfreudig sind)

Also ich entschloss mich dazu, hier im Forum mal eine genauere anleitung zu schreiben, wie das programm funktioniert und so weiter.
hab auch schoen viel geschrieben, mit dem quellcode meiner fertigen bat etwa 2 seiten.
war auch wirklich einer schoener langer text drin. wie auch immer, wollte ich auf speicher oder veroeffentlichen oder was auch immer klicken.
hab ich dann auch. dann kam sone schoene meldung wie "sie haben nicht das recht dazu" odersowas.
das ging mir schon ziemlich auf die eier, wie mann sich vll denken kann.
Natuerlich konnte ich auch nichtmehr zu meinem geschriebenen text zurueck.
kurz und knapp: alles fuer'n **sch!!

hier der downloadlink zum fertigen script: http://dl.dropbox.com/u/19530148/downloader.rar
sry hab jetzt echt nicht die Nerven dafuer, nochmal einen so schei** langen text zu scheiben.
Bitte warten ..
Mitglied: bastla
13.05.2011 um 17:25 Uhr
Hallo rafii6311!
weil ich eine reine batch loesung wollte :P
Und wieso das?

Mit Batch die Zerlegung so vorzunehmen, dass von einer (oder mehreren) nicht definierten Positionen innerhalb einer Zeile der / die Links ausgelesen werden, würde tatsächlich in Arbeit ausarten ...

... aber einen Batch kannst Du natürlich trotzdem bekommen :
01.
@echo off & setlocal 
02.
set "Aus=links.txt" 
03.
 
04.
set "G=%temp%\GetLinks.vbs" 
05.
> %G% echo Set rE = New RegExp 
06.
>>%G% echo rE.Pattern = "http://[^<>]*\.mp4" 
07.
>>%G% echo rE.IgnoreCase = True 
08.
>>%G% echo rE.Global = True 
09.
>>%G% echo For Each Match In rE.Execute(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll):WScript.Echo Match:Next 
10.
>"%Aus%" cscript //nologo %G% %1
Die abzugrasende Datei wird als Aufrufparameter erwartet.

Grüße
bastla
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 17:47 Uhr
joa keine Ahnung
mit batch arbeite ich halt gern, auch wenn ich manche komplexere sachen noch nicht verstehe (zB for schleifen)
mach ich halt ziemlich viel damit, ich "arbeite" ja auch schon damit seit ich 4 bin xD
ich bin halt etwas "batch versessen" ;)


bei mir kommt dann ein runtime error:

C:\Users\Win7x64\AppData\Local\Temp\GetLinks.vbs(5, 1) Microsoft VBScript runtim
e error: Subscript out of range

Press any key to continue . . .
Bitte warten ..
Mitglied: bastla
13.05.2011 um 17:57 Uhr
Hallo rafii6311!
bei mir kommt dann ein runtime error:
Es würde auch bei mir zu einem Fehler führen, wenn ich den Batch aufrufe, ohne die Datei "rafisIndex.html" oder whatever als Parameter zu übergeben ...

Grüße
bastla
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 17:59 Uhr
was meinst du mit parameter uebergeben?
also das script greift schon auf dateien zu, die vorhanden sind.
hier also links.txt
Bitte warten ..
Mitglied: bastla
13.05.2011 um 18:01 Uhr
Hallo rafii6311!

Das Script (eigentlich ist es aber ein Batch) erzeugt die "links.txt" - Aufruf daher zB:
GetLinks.cmd "rafisIndex.html"
Alternativ kannst Du in der letzten Zeile %1 durch eine Dateiangabe (oder eine Variable, die einen Dateinamen/-pfad als Inhalt hat) ersetzen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
13.05.2011 um 18:08 Uhr
Hallo rafii6311!

Damit Links nicht doppelt in die Zieldatei geschrieben werden, kannst Du die Zeile 10 durch
01.
type nul>"%Aus%" 
02.
for /f "delims=" %%i in ('cscript //nologo %G% %1') do findstr /x /c:"%%i" "%Aus%">nul || >>"%Aus%" echo %%i
ersetzen (ungetestet).

Falls die "links.txt" nicht jedes Mal neu erstellt (sondern bei jedem Start - kann übrigens auch einfach per Drag & Drop erfolgen - des Batches nur ergänzt) werden soll, verwende:
01.
if not exist "%Aus%" type nul>"%Aus%" 
02.
for /f "delims=" %%i in ('cscript //nologo %G% %1') do findstr /x /c:"%%i" "%Aus%">nul || >>"%Aus%" echo %%i
Grüße
bastla
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 18:12 Uhr
achsoo

ich dachte das
set "Aus=links.txt"

legt die quelldatei fest
also bei mir gibts jetzt keinen fehler mehr,
aber es wird nur eine leere links.txt angelegt.
wo steht denn in deinem code, aus welcher datei er ausliest, das verstehe ich nicht.
Bitte warten ..
Mitglied: bastla
13.05.2011 um 18:23 Uhr
Hallo rafii6311!

Als bekennender Batch-Fan sollte Dir aber doch %1 geläufig sein (oder Du glaubst einfach, was ich gleich oberhalb geschrieben habe) ...

Aber gut:
Angenommen, Du nennst die Batchdatei "GetLinks.cmd" - dann kannst Du sie mit
GetLinks.cmd "rafisIndex.html"
starten; Du könntest aber auch ganz einfach die auszulesende Datei (also "rafisIndex.html") auf den Batch ziehen ...

Sinnvoll wäre es aber jedenfalls, die Datei "links.txt" mit vollem Pfad (in der Zeile 2) anzugeben, also etwa:
set "Aus=D:\Links und so\links.txt"
Grüße
bastla
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 18:53 Uhr
ok danke ^^
ich war nur immer von "GetLinks.cmd" irritiert.
ich dachte das ist irgendein vbs befehl xD
weil ich benutz halt normalerweise die .bat endung.
naja wie auch immer, jetzt klappts :D

nur das mit dem aussortieren der doppelten links klappt noch nicht.
trotzdem danke, dass es bis jetzt klappt
Bitte warten ..
Mitglied: Lochkartenstanzer
13.05.2011 um 19:11 Uhr
Zitat von rafii6311:

Die html Datei wuerde ich dann mit dem Programm wget.exe herunterladen und local durchsuchen.

wenn Du eh wget einsetzen willst:

lynx --dump <Seite die zu durchsuchen ist> | grep -i "http://www"\...*\.mp4" | sort -u

mit hilfe des cygwin-Paketes.
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 19:43 Uhr
das ist so zwar einfacher, aber auch irgendwie komplizierter.
ich will ja dass man das problem (bilder herunterladen) moeglichst ohne hilfe von anderen
programmen erledigen kann. und durch lynx muss ja auf dem pc des benutzter erstmal cygwin
installiert werden. also kann man mal 5mb draufrechenen.
bis jetzt sind das script ja nur ~200 kB gross, und das fast nur wegen den
"externen" dateien wget.exe und gawk.exe
Bitte warten ..
Mitglied: Friemler
13.05.2011 um 20:13 Uhr
Hallo rafii,

wenn Du bastla's VBS-Lösung nimmst, brauchst Du GAWK ja nicht. Die VBS-Lösung kombiniert mit dem Batchcode aus bastla's letztem Posting erfüllt dann auch noch die Anforderung, doppelte Links auszuschließen UND funktioniert (habe es getestet). Jetzt liegt es wohl an Dir, Deinen Fehler zu finden.

42 Kommentare, die Antwort auf alle Fragen

Gruß
Friemler
Bitte warten ..
Mitglied: rafii6311
13.05.2011 um 20:24 Uhr
bei mir wird immer nur eine leere links2.txt geschreiben


Klappt :D
vielen dank!
hab mich vertippt gehabt ^^



hier der aktualisierte downloadlink
http://dl.dropbox.com/u/19530148/downloader.rar
ist ganze 76kb klein geworden ;D
Bitte warten ..
Mitglied: Lochkartenstanzer
13.05.2011 um 23:17 Uhr
wenn Du schon wget und gawk hast, brauchst für lynx und sort auch nicht mehr allzuviel. Die benutzen alle soweit ich weiß die cygwin.dll.

Aber man kann natürlich genauso ohne lynx alleine mit wget, pipe, grep und gawk die Aufgabe lösen.
Bitte warten ..
Mitglied: bastla
13.05.2011, aktualisiert 18.10.2012
... wobei ja auch "wget" nicht unbedingt ein Muss sein muss : http://www.administrator.de/forum/vbs-wget-download-html-quelltext-als- ... bzw die Links dort sowie http://blog.netnerds.net/2007/01/vbscript-download-and-save-a-binary-fi ... ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

C und C++
gelöst Anzahl der Buchstaben in einem String Element Array C++ (3)

Frage von Protected zum Thema C und C ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...