rafii6311
Goto Top

Platzhalter in Batch mit gesamten string

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?

Mfg Rafii

Content-Key: 166090

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

Ausgedruckt am: 29.03.2024 um 01:03 Uhr

Mitglied: 60730
60730 11.05.2011 um 18:49:16 Uhr
Goto Top
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
Mitglied: bastla
bastla 11.05.2011 um 18:51:49 Uhr
Goto Top
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
Mitglied: Biber
Biber 11.05.2011 um 18:53:43 Uhr
Goto Top
Ist mit Batchbefehlen nicht möglich, aber das Windows-Utility "FindStr.exe" kann mit solchen Anforderungen umgehen.

Ich hab keine Probleme damit.
Mitglied: dog
dog 11.05.2011 um 18:54:03 Uhr
Goto Top
#!/usr/bin/env perl 

use strict;
use warnings;
use Data::Dumper;

my $str= 'bla bla www.seite.com/lala.mp4 bla blax www.seite2.com/lulu.mp4 bla blabla';  

while($str =~ /(www\..*?\.mp4)/g) {
	print Dumper($1);
	
}
Mitglied: rafii6311
rafii6311 11.05.2011 um 18:55:02 Uhr
Goto Top
Es tut mir leid, wenn ihnen "Mfg" 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
Mitglied: rafii6311
rafii6311 11.05.2011 um 19:01:14 Uhr
Goto Top
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.
Mitglied: Skyemugen
Skyemugen 11.05.2011 um 19:31:12 Uhr
Goto Top
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*
Mitglied: bastla
bastla 11.05.2011 um 19:53:29 Uhr
Goto Top
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
Mitglied: Biber
Biber 11.05.2011 um 19:56:52 Uhr
Goto Top
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
Mitglied: bastla
bastla 11.05.2011 um 20:07:41 Uhr
Goto Top
@Biber
Ist /r nicht ohnehin Default?

Grüße
bastla
Mitglied: Biber
Biber 11.05.2011 um 20:36:07 Uhr
Goto Top
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
Mitglied: rafii6311
rafii6311 11.05.2011 um 20:39:33 Uhr
Goto Top
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
Mitglied: Biber
Biber 11.05.2011 um 20:56:31 Uhr
Goto Top
Moin rafii6311,

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

Grüße
Biber
Mitglied: rafii6311
rafii6311 11.05.2011 um 21:03:07 Uhr
Goto Top
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
Mitglied: bastla
bastla 11.05.2011 um 21:35:35 Uhr
Goto Top
Hallo rafii6311!

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

Grüße
bastla
Mitglied: Skyemugen
Skyemugen 11.05.2011 um 21:48:09 Uhr
Goto Top
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é
Mitglied: Biber
Biber 11.05.2011 um 22:18:24 Uhr
Goto Top
*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 face-wink) 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
Mitglied: 60730
60730 11.05.2011 um 22:30:35 Uhr
Goto Top
moin,
Zitat von @rafii6311:
Es tut mir leid, wenn ihnen "Mfg" als Gruss nicht reicht, mir wuerde es halt reichen, deswegen schrieb ich es auch.
  • mfg 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
Mitglied: Friemler
Friemler 12.05.2011 um 05:02:57 Uhr
Goto Top
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:
{
  line = tolower($0)
  
  do
  { match(line, /http:\/\/[^<>]*\.mp4/)
    if (RSTART != 0)
    { print substr(line, RSTART, RLENGTH)
      line = substr(line, RSTART+RLENGTH)
    }
  } while (RSTART != 0)
}

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
Mitglied: rafii6311
rafii6311 12.05.2011 um 21:53:28 Uhr
Goto Top
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!
Mitglied: Friemler
Friemler 12.05.2011 um 22:18:06 Uhr
Goto Top
Hallo rafi,

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

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ß
Mitglied: bastla
bastla 12.05.2011 um 22:21:45 Uhr
Goto Top
@Friemler
der Code wäre aber sperriger als AWK.
Gar nicht mal so schlimm, oder? face-wink
Set rE = New RegExp
rE.Pattern = "http://[^<>]*\.mp4"  
rE.IgnoreCase = True
rE.Global = True
For Each Match In rE.Execute(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll)  
    WScript.Echo Match
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 ... face-wink
Mitglied: Friemler
Friemler 12.05.2011 um 22:29:01 Uhr
Goto Top
@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 face-wink ).

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ß
Mitglied: bastla
bastla 12.05.2011 um 22:32:55 Uhr
Goto Top
@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 face-wink
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 face-wink) draus machen können ...

Grüße
bastla
Mitglied: Biber
Biber 12.05.2011 um 23:40:26 Uhr
Goto Top
@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
Mitglied: Friemler
Friemler 13.05.2011 um 00:04:31 Uhr
Goto Top
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 face-sad [/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 face-wink .

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 face-wink .

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

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

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

Warum das?

Gruß
Friemler
Mitglied: rafii6311
rafii6311 13.05.2011 um 15:46:54 Uhr
Goto Top
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.
Mitglied: bastla
bastla 13.05.2011 um 17:25:35 Uhr
Goto Top
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 ... face-wink

... aber einen Batch kannst Du natürlich trotzdem bekommen face-wink:
@echo off & setlocal
set "Aus=links.txt"  

set "G=%temp%\GetLinks.vbs"  
> %G% echo Set rE = New RegExp
>>%G% echo rE.Pattern = "http://[^<>]*\.mp4"  
>>%G% echo rE.IgnoreCase = True
>>%G% echo rE.Global = True
>>%G% echo For Each Match In rE.Execute(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll):WScript.Echo Match:Next  
>"%Aus%" cscript //nologo %G% %1  
Die abzugrasende Datei wird als Aufrufparameter erwartet.

Grüße
bastla
Mitglied: rafii6311
rafii6311 13.05.2011 um 17:47:10 Uhr
Goto Top
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 . . .
Mitglied: bastla
bastla 13.05.2011 um 17:57:37 Uhr
Goto Top
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
Mitglied: rafii6311
rafii6311 13.05.2011 um 17:59:30 Uhr
Goto Top
was meinst du mit parameter uebergeben?
also das script greift schon auf dateien zu, die vorhanden sind.
hier also links.txt
Mitglied: bastla
bastla 13.05.2011 um 18:01:45 Uhr
Goto Top
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
Mitglied: bastla
bastla 13.05.2011 um 18:08:55 Uhr
Goto Top
Hallo rafii6311!

Damit Links nicht doppelt in die Zieldatei geschrieben werden, kannst Du die Zeile 10 durch
type nul>"%Aus%"  
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:
if not exist "%Aus%" type nul>"%Aus%"  
for /f "delims=" %%i in ('cscript //nologo %G% %1') do findstr /x /c:"%%i" "%Aus%">nul || >>"%Aus%" echo %%i  
Grüße
bastla
Mitglied: rafii6311
rafii6311 13.05.2011 um 18:12:15 Uhr
Goto Top
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.
Mitglied: bastla
bastla 13.05.2011 um 18:23:14 Uhr
Goto Top
Hallo rafii6311!

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

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
Mitglied: rafii6311
rafii6311 13.05.2011 um 18:53:51 Uhr
Goto Top
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 face-smile
Mitglied: Lochkartenstanzer
Lochkartenstanzer 13.05.2011 um 19:11:02 Uhr
Goto Top
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.
Mitglied: rafii6311
rafii6311 13.05.2011 um 19:43:46 Uhr
Goto Top
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
Mitglied: Friemler
Friemler 13.05.2011 um 20:13:38 Uhr
Goto Top
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 face-wink

Gruß
Friemler
Mitglied: rafii6311
rafii6311 13.05.2011 um 20:24:03 Uhr
Goto Top
bei mir wird immer nur eine leere links2.txt geschreiben face-sad


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
Mitglied: Lochkartenstanzer
Lochkartenstanzer 13.05.2011 um 23:17:43 Uhr
Goto Top
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.
Mitglied: bastla
bastla 13.05.2011, aktualisiert am 18.10.2012 um 18:46:53 Uhr
Goto Top
... wobei ja auch "wget" nicht unbedingt ein Muss sein muss face-wink: VBS wget download HTML-Quelltext als Variable ohne Datei umleitung? bzw die Links dort sowie http://blog.netnerds.net/2007/01/vbscript-download-and-save-a-binary-fi ... ...

Grüße
bastla