neuling79
Goto Top

Batchdatei erstellen (autom. Download in best. Ordner)

Möchte ein Batchdatei welche mir meine täglichen arbeiten am pc erleichtert.
Eins vorweg ich bin Leihe in Sachen Batchdateierstellung. Ich benutze: Windows XP SP2

Hi Admins 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)

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.

Content-Key: 58895

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

Printed on: April 18, 2024 at 17:04 o'clock

Member: problemsolver
problemsolver May 13, 2007 at 13:58:40 (UTC)
Goto Top
Hi!

das Einzige was mit spontan einfällt ist das Tool WGet. (WGet ist allerdings auch in den UNXTools enthalten!)
Hier drüber lassen sich Dateien herunterladen.
Für das zurückgeben eines Datums (auch formatiert) nutze ich ab und an die UNXTools , die von Unix her auf Windows portiert worden sind. Speziell hier würde ich die date.exe benutzen.

Folgende Zeile gibt das Datum, wie gewünscht zurück:
date.exe +%d%m%y

Mit folgender Zeile lädst du deine Datei in das Verzeichnis herunter, wo auch die date.exe und deine Batch-Datei liegt.
(%~dp0 = Pfad in der die Batchdatei liegt)
for /F %%i in ('%~dp0\date.exe +%%d%%m%%y') do set test=%%i  
wget "http:// www.teste-seite.de/test/%test%.exe"  

Wenn du dann noch die Datei ausführen möchtest ergänzt du dann noch:
"%~dp0\%test%.exe"  

Es ist zwar auch möglich mit dem internen Windows Befehlen das Datum zu formatieren, aber ein gutes Pferd springt nicht höher wie es muss, ne? face-wink

Bei Fragen, meld dich einfach nochmal face-smile Ansonsten noch viel Erfolg!

Gruß

Markus
Mitglied: 36539
36539 May 13, 2007 at 18:02:58 (UTC)
Goto Top
[edit]nur in Ergänzung zu "problemsolver"[/edit]
http://toolsandmore.de/Central/Produkte/Software/Internet/Download/Easy ...
Member: Neuling79
Neuling79 May 14, 2007 at 04:45:41 (UTC)
Goto Top
So weit so gut ...

müssen die beiden Programme Wget und das UNXUtils dann die ganze Zeit laufen ?
Und ist mein Problem nicht über eine einzige Batchdatei lösbar.

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 die Batchdatei früh ausführen lasse nach start meines Pc's
abgefragt werden aktuelles datum -1 (für den gestrigen tag [vereinfacht dargestellt]),
ob diese Datei vorhanden ist. wenn ja lade sie herunter in den oben genannten Ordner.

@problemslover könntest du die quellltextzeilen kurz kommentieren, wie gesagt bin noch leihe,
damit ich inh nachvollziehen kann.

Und vielleicht kannst du nochwas zu Thema benutzername und passwort sagen oder macht man _das_ über Wget ???
Member: problemsolver
problemsolver May 14, 2007 at 13:46:40 (UTC)
Goto Top
So weit so gut ...

müssen die beiden Programme Wget und
das UNXUtils dann die ganze Zeit laufen ?

Nein. Das sind simple standalone Exe-Files

Und ist mein Problem nicht über eine
einzige Batchdatei lösbar.

Wenn du meinen Beitrag liest, siehst du auch, dass es sich eeeigentlich um eine einzige Batch handelt.


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

Aufruf der Batch über einen geplanten Task, der um 23 Uhr automatisch die Datei herunterlädt.

auf jeden Fall aber am
darauffolgenden Tag.
also soll wenn ich die
Batchdatei früh ausführen lasse
nach start meines Pc's
abgefragt werden aktuelles
datum -1 (für den gestrigen tag

Hier wird es wohl komplizierter bei einer Batch-Datei. Datumsberechnungen sind so oder so eine Sache für sich. Allgemeine Berechnungen z.B.
set /A ergebnis=5+2
echo %ergebnis%
:: Inhalt der Variablen Ergebnis ist hier 7

[vereinfacht dargestellt]),
ob diese Datei vorhanden ist.
wenn ja lade sie herunter in den oben
genannten Ordner.

@problemslover könntest du die
quellltextzeilen kurz kommentieren, wie
gesagt bin noch leihe,
damit ich inh nachvollziehen kann.

Du kannst das wunderbar alles nachlesen: Start --> Ausführen --> CMD
Hier gibts du den Befehl ein, der dir unklar ist, gefolgt von einem " /?" Beispiel "for /?"
Bei den UNXTools gibst du ein : date --help oder wget --help


Und vielleicht kannst du nochwas zu Thema
benutzername und passwort sagen oder macht
man _das_ über Wget ???

Du meinst einen Download über eine .htaccess und .htpasswd geschützte Seite? Dann schau mal bei wget --help vorbei... hoffe es hilft dir.
Wenn man etwas sich selber aneignet, lernt man viel besser, als sich alles zusammenbasteln zu lassen, was nicht heissen soll, dass ich gerne und freiwillig helfe. Bin aber eher ein Vertreter von: Ich geb dir das Startkabel und Starthilfe, das Gaspedal musst du aber selber drücken face-wink

Lieben Gruß

Markus
Member: Neuling79
Neuling79 May 14, 2007 at 16:51:54 (UTC)
Goto Top
Vielen danke für deine Starthilfe-Tips
@problemsolver


Genau diese Art Hilfe ist es die ich suche.
(Will ja was bei lernen obwohl ich sonst eher mit multimedia zu tun habe
und deswegen wohl etwas mehr starthilfe brauche face-wink


Es scheint mir sicherer es dennoch erst am Folgetag downzuloaden,
weil die Batchdatei nach dem PC-Start ausgeführt werden soll.
Und mein PC _nicht_ immer die Nacht durchläuft.

ok das mit der Datums ausgabe des aktuellen tabes funktioniert über das unxtools
brauche ja aber dann das vom Vortag.

was ist der unterschied zwischen %% und %

%wort% <- ist denke ich eine Variable
also Easy-wGet ist ja der Hammer oO
Member: problemsolver
problemsolver May 14, 2007 at 19:40:36 (UTC)
Goto Top
Vielen danke für deine Starthilfe-Tips
@problemsolver


Genau diese Art Hilfe ist es die ich suche.

Super face-smile Immer weiter so... face-smile

(Will ja was bei lernen obwohl ich sonst
eher mit multimedia zu tun habe
und deswegen wohl etwas mehr starthilfe
brauche face-wink


Es scheint mir sicherer es dennoch erst am
Folgetag downzuloaden,
weil die Batchdatei nach dem PC-Start
ausgeführt werden soll.
Und mein PC _nicht_ immer die Nacht
durchläuft.

ok das mit der Datums ausgabe des aktuellen
tabes funktioniert über das unxtools
brauche ja aber dann das vom Vortag.

was ist der unterschied zwischen %% und %

damit der for befehl in batchdateien funktioniert wird aus dem einfach % ein %%. in der normalen kommandozeile genügt hier das einfache % zeichen. einfach mal testen.


%wort% <- ist denke ich eine Variable

richtig. Variablen setzt du mit set variable=wert
anzeige der variable mit echo %variable%

---------------------------------------------------------------------------------------------
also Easy-wGet ist ja der Hammer oO


Hier die Lösung deines Problems:
Erstelle eine "_test.vbs" Datei mit folgendem Inhalt:
wscript.echo date()-1

War also doch net so schwer von dem aktuellen Datum einen Tag abzuziehen... :-P

Dann erstelle eine Batchdatei "_test.bat" mit folgendem Inhalt und lege beide Dateien mit wget in ein Verzeichnis:
for /F "tokens=1,2,3 delims=." %%i in ('cscript //Nologo %~dp0\_test.vbs') do set tag=%%i  
for /F "tokens=1,2,3 delims=." %%i in ('cscript //Nologo %~dp0\_test.vbs') do set monat=%%j  
for /F "tokens=1,2,3 delims=." %%i in ('cscript //Nologo %~dp0\_test.vbs') do set jahr=%%k  
"%~dp0\wget.exe" "http://www.teste-seite.de/test/%tag%%monat%%jahr%.exe"  

tokens:
bezieht sich auf die Ausgabe des Befehls
cscript //Nologo "%~dp0\_test.vbs" 
Führe die _test.vbs einfach mal aus und du siehst was ich meine.
Diese Ausgabe werte ich aus, indem ich durch den Trenner (delims) "." das Datum in Tag, Monat und Jahr aufteile. (tokens)
Im ersten Befehl nehme ich den ersten Teil: set Tag=%%i
in den weiteren Befehlen gehe ich von %%i aus und nehme den nächsten Teil %%j und dann %%k

Die Initialvariable ist in meinem Beispiel %%i (for /F "tokens=1,2,3 delims=." %%i ... ). Die nächsten sind ja nach dem Alphabet vordefiniert face-wink

Hoffe ich konnte dir nun helfen...

Gruß

Markus
Member: Neuling79
Neuling79 May 15, 2007 at 04:45:41 (UTC)
Goto Top
Ich bedanke mich vielmals und werde das heute mal alles restlos ausprobieren.

Kann nur sagen Danke Danke Danke
Und wenn du mal in der nähe bist gebe ich dir ein Bier aus face-wink
habe das schon mal schnell getestet er gibt mir das datum für den gestrigen also den Vortag aus.
14.05.2007 zwar noch icht in der richtigen schreibweiße aber das bekomme ich schon hin.
Ok und mit Call ruf ich dann zu guter letzt meine batch zum aktualisieren auf
Member: Neuling79
Neuling79 May 15, 2007 at 20:00:05 (UTC)
Goto Top
Muss doch sicher das Datum welches ich in der folgenden form bekomme
tt.mm.jjjj (14.05.2007)

in eine Variable speichern und dann
das 3,6,7,8 Zeichen (token) löschen
damit das dann folgendermaßen aussieht:
ttmmjj

kann mir einer helfen weiß nicht wie das jetzt geht .

hole mir jetzt wie gesagt das date über die UnxTools (date.exe)
Member: problemsolver
problemsolver May 16, 2007 at 07:26:28 (UTC)
Goto Top
Hi,

um die Jahreszahl zu manipulieren, musst Du die Variable %jahr% manipulieren.
Hierzu änderst du die Batch-Datei wie folgt:

for /F "tokens=1,2,3 delims=." %%i in ('cscript //Nologo %~dp0\_test.vbs') do set tag=%%i  
for /F "tokens=1,2,3 delims=." %%i in ('cscript //Nologo %~dp0\_test.vbs') do set monat=%%j  
for /F "tokens=1,2,3 delims=." %%i in ('cscript //Nologo %~dp0\_test.vbs') do set jahr=%%k  
"%~dp0\wget.exe" "http://www.teste-seite.de/test/%tag%%monat%%jahr:~2,2%.exe"  

%jahr:~2,2% bedeutet, dass Du nach dem 2. Zeichen die nächsten 2 Zeichen für deinen Gebrauch weiterverwenden willst.
Somit erhältst du für das heutige Datum 16.05.2005 zuerst das Datum 15.05.2007 aus dem VBS-Script. In den Variablen stehen dann folgende Werte:
%tag%=15
%monat%=05
%jahr%=2007

Wie du siehst, musst du hier nichts löschen, da das Datum ja schon vorher durch die For /F ... Befehle gesplittet worden und in die Variablen geschrieben worden ist.

Gruß

Markus