Batchdatei erstellen [autom. Download in best. Ordner]

Grafixboy

Erfahrenes Mitglied
Benötige eine Batchdatei welche mir meine täglichen arbeiten am pc erleichtert.
Eins vorweg ich bin Leihe in Sachen Batchdateierstellung. Ich benutze: Windows XP SP2
----------------------------------------------------------------------------------------------------------------------------------

Hallo Leute ich habe folgendes Problem...

ich benötige eine Batchdatei welche tägl.(an amerikanisch Werkstagen)
eine Datei aus dem Internet lädt und in einen Ordner ablegt.

PS: Wenn kein Amerikanischer Werkstag ist ist da auch keine Datei da.

Die Datei ist folgendermaßen aufgebaut und liegt dort: (die Quelle ist immer die selbe)
"http:// www.teste-seite.de/test/130507.exe" [ttmmjj.exe]

(nur ein Beispie) (um in den Pfad u kommen muss ich auch einen Benutzername angeben und ein Passwort)

Sollte vielleich mal näher erklären:

die zu downloadene Datei ttmmjj.exe steht immer ab

Beispiel: 140507.exe steht z.B: spätestens am selben Tag um 22:00 im Netz
auf jeden Fall aber am darauffolgenden Tag.
also soll wenn ich batchdatei früh aufführen lasse nach start meines Pc's
abgefragt werden aktuelles datum -1 (für den gestrigen tag [vereinfacht dargestellt]),
ob diese Datei vorhanden ist.

Da soll die Datei dann abgelegt werden:

"C:\Programme\Prog-Name\Unterordner\ttmmjj.exe"

Am Ende soll eine Batchdatei aufgerufen werden welch ich aber schon habe.

Ich bedanke mich bei allen im Vorraus, bei denen die sich mit mir darüber
Gedanken machen. Und nützliche Beiträge beisteuern.

Beziehungsweise welche Möglichkeiten habe ich mein Ziel zu erreichen.
Mir würden schon Schlagwörter ausreichen den Rest würde ich mir u.U. selbst anlernen.

Ich denke das könnte für viele User einne nützliche sache sein.

Habe auch schon von einer Batch gelesen welche Vierenprogs aktualisiert wer so was hatt dafür wäre ich schon dankbar.
Und ich hätte eine Grundlage.
 
Hallo, das ist eigentlich kein problem. Du brauchst dazu einen Kommandozeilen Webclient wie wget oder curl - wird mit beiden funktionieren. Was wir aber noch unterscheiden müssen, ist wie du den Benutzernamen und das Passwort eingibst? Ist das ein Login über ein Formular auf einer Seite, oder ist das ein HTTP-Authentication-Fenster (Popup mit Username und Passwort feld)?

Wenn es sich HTTP-Authentication handelt, sollte es ungefähr so funktionieren:
Code:
@echo off
REM Setup ------------------------------------------------------------
set user=USERNAME
set pass=PASSWORD
set baseurl=http://www.teste-seite.de/test/
set target=C:\Programme\Prog-Name\Unterordner\


set jj=%date:~-2%
set mm=%date:~-7,2%
set /a tt=%date:~-10,2%-1
set file=%jj%%mm%%tt%.exe

wget --user=%user% --password=%pass% --output-document="%target%%file%" %baseurl%%file%

Wenn du die Wochentage einbauen willst, kommt es zu teil auf dein Betriebssystem und deine Ländereinstellungen an...
 
Hallo habe schon nicht mehr dran geglaubt.
Danke erstmal für die Mühe.

Mit wGet benötige ich seltsamerweise kein PW liegt aber vielleicht dran das ich es bei Firefox abgespeichert habe mir kam das auch komisch vor.
Vielleicht sind auch nur die Recht schlampig gesetzt.
Es ist ein Login im Formular einer Seite. Mann kommt dann nur in ein Uterverzeichnis
in dem Beispie wäre das test.

Code:
@echo off
REM Setup ------------------------------------------------------------
set baseurl=http://www.teste-seite.de/test/
set target=C:\Programme\Prog-Name\Unterordner\

set jj=%date:~-2%
set mm=%date:~-7,2%
set /a tt=%date:~-10,2%-1
set file=%tt%%mm%%jj%.exe

wget  --output-document="%target%\%file%" %baseurl%%file%
Da fehlte noch ein Backslash target und File da er es sonst eine Orderebene tiefer unter folgendem Name ablegt: unterordner150507.exe

Das mit dem Benutzername und dem Passwort und wget habe ich erst vorgestern erfahren.
dann habe ich das mit datum mal von jjmmtt in ttmmjj umgewandelt funktioniert

zum Vortag (gestern):
Für heute den 16.05.2007 hat er mir erstmal richtiger weise folgendes ausgegeben "150507".
Ich denke das wird auch vom 2. bis zu letzten des Monats funktionieren
aber doch sicher nicht am 1. eines Monats oder irre ich mich da -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
außerdem muss jetzt noch eine zweite Batch die ich schon habe aufgerufen werden die
testerei.bat
das müste doch über das Call gehen oder ?
 
Zuletzt bearbeitet:
Mit wGet benötige ich seltsamerweise kein PW liegt aber vielleicht dran das ich es bei Firefox abgespeichert habe mir kam das auch komisch vor.
Hmmm das ist sehr komisch - hast du die Datei überprüft? Nicht, dass du nur eine 401-Statusseite als *.exe speicherst.

Vielleicht sind auch nur die Recht schlampig gesetzt.
Es ist ein Login im Formular einer Seite. Mann kommt dann nur in ein Uterverzeichnis
in dem Beispie wäre das test.
Kannst du es im Browser direkt aufrufen (das unterverzeichnis)?

Code:
@echo off
REM Setup ------------------------------------------------------------
set baseurl=http://www.teste-seite.de/test/
set target=C:\Programme\Prog-Name\Unterordner\

set jj=%date:~-2%
set mm=%date:~-7,2%
set /a tt=%date:~-10,2%-1
set file=%tt%%mm%%jj%.exe

wget  --output-document="%target%\%file%" %baseurl%%file%
Da fehlte noch ein Backslash target und File da er es sonst eine Orderebene tiefer unter folgendem Name ablegt: unterordner150507.exe
Wenn dein target auf \ endet und du nich eines zwischen %target%\%file% setzt, haben wir aber C:\Programme\Prog-Name\Unterordner\\150507.exe oder übersehe ich jetzt etwas?

zum Vortag (gestern):
Für heute den 16.05.2007 hat er mir erstmal richtiger weise folgendes ausgegeben "150507".
Ich denke das wird auch vom 2. bis zu letzten des Monats funktionieren
aber doch sicher nicht am 1. eines Monats oder irre ich mich da
nein -da hast du vollkommen recht - das habe ich nicht bedacht... Ist das dein lokaler rechner? Oder können wir auf der Maschine was installieren?

außerdem muss jetzt noch eine zweite Batch die ich schon habe aufgerufen werden die
testerei.bat das müste doch über das Call gehen oder ?
Ja, das kannst du über call machen
 
Ich hatte eine Idee:

Code:
@echo off

REM Setup ------------------------------------------------------------
set baseurl=http://www.teste-seite.de/test/
set target=C:\Programme\Prog-Name\Unterordner\

REM Das Datum von gestern einlesen und den Filename zusammenbauen
set /p gestern=<gestern.txt
set jj=%gestern:~-2%
set mm=%gestern:~-7,2%
set tt=%gestern:~-10,2%
set file=%tt%%mm%%jj%.exe

REM Download
wget  --output-document="%target%\%file%" %baseurl%%file%

REM Das Datum in gestern.txt auf heute setztem, damit es morgen geslesen werden kann
echo %date% > gestern.txt

call testerei.bat
Damit es läuft, musst du zuerst (nur das erstemal) eine Datei "gestern.txt" anlegen, die das gestrige Datum als inhalt hat. Diese Datei wird dann an jedem Tag eingelesen und das Datum geparsed. Wenn der Download fertig ist, wird das aktuelle Datum in die "gestern.txt" geschrieben, die ja erst morgen wieder ausgelesen wird. Somit haben wir alles im Griff inklusive Schaltjahre :)
 
Wow wow wow danke für deine Mühe du bist ja ein Meister deines Faches hast mir damit sehr geholfen, insofern das klappt wovon ich ausgehe, mir etwas meiner tälichen Arbeit zu ersparen. Werde das auf jeden Fall gleich mal zusammenbauen und testen.

Die Datei ist einwandfrei und die Aktualisierung funktionierte tadellos. Und die Quelle ist mir sehr vertraut von jemanden den ich kenne.

Kann es im Browser auch direkt aufrufen (ist eine index seite die dem Inhalt eines Explorers ähnelt. Ist aber nicht weiter wichtig.

Wenn dein target auf \ endet und du nich eines zwischen %target%\%file% setzt, haben wir aber C:\Programme\Prog-Name\Unterordner\\150507.exe oder übersehe ich jetzt etwas?
Nein du übersiehst nichts habe einen Fehler gemacht. Hat mich jetzt auch stutzig gemacht da muste ich nochmal schauen.
Aber du bist der Meister ich habe in der Batch versehentlich den Backslash nach dem unterordner gelöscht, sorry das ich dich verunsichert habe.

Ist das dein lokaler rechner? Oder können wir auf der Maschine was installieren?
ja ist mein Rechner, kein Problem

Nun zu deiner Idee:
Eine Ähnliche Idee, nur komplizierter, hatte ich auch.
nur wuste ich nicht so recht über das auslesen aus einer *.txt datei bescheid.
Liege ich richtig das die Datei, wie du es jetzt programmiert hast im selben Ordner wie die Batch-Datei liegen muss ?
----------------------------------------------------------------------------------------------------------------------------------
-Kleines Gedankenspiel:
Da ja nicht jeden Tag ein Update vorhanden ist sondern nur wie oben erwähnt an amerikanischen Werkstagen und ich zwar oft am pc bin aber es auch mal vor kommt das ein ganzen tag der pc mal nicht in betrieb war, habe ich folgende Befürchtung:

muss ich noch durchdenken kommt noch (bin dabei)
 
Zuletzt bearbeitet:
Wow wow wow danke für deine Mühe du bist ja ein Meister deines Faches hast mir damit sehr geholfen, insofern das klappt wovon ich ausgehe, mir etwas meiner tälichen Arbeit zu ersparen.
:) Freut mich wenns geholfen hat

Liege ich richtig das die Datei, wie du es jetzt programmiert hast im selben Ordner wie die Batch-Datei liegen muss ?
Ja, kann aber natürlich angepasst werden

-Kleines Gedankenspiel:
Da ja nicht jeden Tag ein Update vorhanden ist sondern nur wie oben erwähnt an amerikanischen Werkstagen und ich zwar oft am pc bin aber es auch mal vor kommt das ein ganzen tag der pc mal nicht in betrieb war, habe ich folgende Befürchtung:

muss ich noch durchdenken kommt noch (bin dabei)
LOL - sehr cool :) , schreib einfach was dir durch den Kopf geht :)
 
Also folgendes Problem:
So 200507 ->hier findet er keine Datei 190507 (weil kein Werkstag[Sa]) und setzt das datum auf 200507
Mo 210507 ->hier findet er keine Datei 20507 (weil kein Werkstag[So]) und setzt das datum auf 210507
Di 220507 -> an diesem Tag schaffe ich es warum auch immer nicht an den PC
Mi 230507 !-> und jetzt lädt er die datei für den Mo den 210507 und setzt das datum auf den 230507
Do 240507 !-> und jetzt wirds Brühe weil er jetzt den 230507 runterlädt und mir der 220507 fehlt

Und dies das ganze zu aktualisierende Prog. schrotten, unbrauchbar machen, würde.
Weil die Aktualisierungen strikt nach Reihenfolge aktualisiert werden müssen

also bräuchte ich eine "nochverbleibendeAktualisierungen.txt" in der eine Art Array erzeugt wird mit den fehlenden tagen seit der letzten Aktualisierung
 
Zuletzt bearbeitet:
Ja, das dachte ich mir schon... Und hier wirds mit Batch dann doch eher unpraktisch...

1) Bleiben die Updatefiles in dem Verzeichnis liegen? Oder werden die von dem Programm gelöscht?

2) Außerdem (ist mir grad aufgefallen) erzeugt wget ein leeres File wenn es die Datei am Server nicht findet. Sprich da müssen wir wegen den Wochenenden auch noch aufpassen.

3) Wie ist es wenn du dich übers Web einloggst und mehere Tage nicht online warst - siehst du dann eine Liste mit den files?


Lösungsansatz:
1) Auf dem Server einloggen
2) HTML Seite mit den links zu den Files speichern
3) diese HTML seite parsen
4) alle *.exe files die wir noch nicht haben runterladen
5) unser log aktualisieren
 
1.)
Also im web bleiben die letzten 40 Aktualisierungen vom heutigen Tag an liegen.
Die heutige Aktualisierung wird also erst nach den nächsten 40 amerik. Werkstagen gelöscht werden.

2.)
Gott sei dank ist dir das noch vor dem morgigen Feiertag (obwohl feiern die das da überhaubt) eingefallen. Aber ich hatte ja eh schon ne Sicherheitskopie von den Daten gezogen.
Da brauchen wir ja das Wochentagskürzel (Sa,und So) und eine Abfrage.
Muss also mit in die gestern.txt .
Habe ich hier aber schon mal gesehen irgendwo.

3.)
die Liste mit den Files sehe ich immer
habe es im Browser abgespeichert.

Wenn wir nach deinem Lösungsansatz alle herunterladen muss dies aber in einem anderen Ordner geschehen da die andere Batsch doof ist und sonst alle diese dateien in heute.exe umbenennen würde und immer die vorherige in die nächste überschreiben würde und am ende nur dass aktuellste aktuallisieren würde.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück