admin-san
Goto Top

Batchdatei, Ausführbarkeit beschränken.

Hallo,

ich möchte eine Batchdatei erzeugen, die nur bis zu einem bestimmten Datum ausführbar ist. Das Zieldatum (Datum bis zu dem die Batchdatei ausgeführt werden kann), soll das Erstellungsdatum einer .jpg-Datei sein, die auf jedem der entsprechenden Rechner vorhanden ist (ZDate.jpg). Das Zieldatum der Batchdatei mitgeben wäre allerdings auch schon schön. Die Lösung über eine auszulesende Datei (ZDate.jpg) finde ich allerdings eleganter. Die könnte ich nämlich über ein Up- bzw. Download ggf. aktuallisieren.

Das ganze sollte unter XP und 2000 laufen und natürlich face-wink international sein, also in England, Frankreich, Deutschland oder sonstwo, funktionieren.

Habe mich bereit durch etliche Foren und Tutorials gewühlt, leider erfolglos...

Freue mich auf Eure Beiträge und bedanke mich recht artig für Eure Bemühungen!


Gruß,
Admin-san

Content-Key: 53575

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

Printed on: April 23, 2024 at 15:04 o'clock

Member: Biber
Biber Mar 08, 2007 at 15:19:34 (UTC)
Goto Top
Moin Admin-san,

willkommen im Forum.

Im Bereich "Batch und Shell" findest Du im Tutorial (siehe Link unten) eine GetAllDateTimeInfos.bat zum Copy & Pasten.

Wenn die irgendwo verfügbar gemacht werden könnte, wäre folgende Skizze denkbar:

:: ---------snipp DeinBatch.bat
@echo off & setlocal
....
If not exist d:\pfad\Zdate.jpg goto :eof
for /f %%i in ('dir /t:c d:\pfad\Zdate.jpg^|find /i "Zdate.jpg"') do call  GetAllDateTimeInfos.bat "%%i" /s /q  
Set FileCreationDate=%JJ%%MM%%TT%
call  GetAllDateTimeInfos.bat "%date%i" /s /q  
Set TodaysDate=%JJ%%MM%%TT%
GetAllDateTimeInfos.bat "%%i" /u  
REM jetzt sollten in %todaysDate% und in %FileCreationDate% jeweils Strings im ANSI-Date-Format "20070308" stehen  
Set /a Datediff=%FileCreationDate% - %TodaysDate%
If %DateDiff% LEQ 0  goto :eof
REM Andernfalls folgt jetzt das, was <i>eigentlich</i> ausgeführt werden soll
...
...

Gruss
Biber
Member: Admin-san
Admin-san Mar 08, 2007 at 15:55:04 (UTC)
Goto Top
Moin-Moin Biber,

vielen Dank für Deine prompte Antwort. Werde es ausprobieren...

Mit Deinem Tutorial habe ich bereits "gearbeitet", konnte aber keine Ableitung zu meinem Problem herstellen (das Vergleichen von Daten). Werde es also, wie gesagt, jetzt nochmal probieren.

Bin guter Dinge.


Gruß und vielen Dank,
Admin-san
Member: Admin-san
Admin-san Mar 12, 2007 at 12:15:31 (UTC)
Goto Top
Hallo Biber,

habe leider das Problem, dass das Auslesen der Datei (ZDate.jpg, Datum: 13.03.2007, also morgen) nicht wirklich funktioniert. Wenn ich mir das Ergebnis ausgeben lasse, dann sieht es wie folgt aus:

Environment variable 03" " yy not defined
Environment variable 2007"" not defined
INDate:"13.03.2007"
INTime:11:20:20,71
DateOrder=dd-mm-yy
KW=11
OSKW=11
DoW=3
DoY=72
cDoW=Tue
dd="
TT="
MM=~-2,2
hh=11
min=20
ss=20
ms=71

Habe schon etwas rumprobiert aber noch keine Lösung gefunden. Wollte das Verhalten mal auf anderen Rechnern testen, bin aber noch nicht dazu gekommen.

Mein System ist übrigens ein multilingual XP SP2(Systemumgebung: englisch). Einstellung zur Tastatur: "deutsch". Datumstrennzeichen: "/".


Nochmals vielen Dank für Deine Hilfe.


Gruß,
Admin-san.
Member: Biber
Biber Mar 12, 2007 at 12:34:13 (UTC)
Goto Top
Moin Admin-san,

mein Fehler.

Ersetze bitte in dem Schnipsel oben die GetAllDateTimeInfo-Aufrufe wie folgt:

Streiche: .....GetAllDateTimeInfos.bat "%%i" ...
Setze: ....GetAllDateTimeInfos.bat %%i ...

[also den Parameter %%i OHNE Anführungszeichen]

Sorry
Biber
Member: Admin-san
Admin-san Mar 12, 2007 at 15:56:57 (UTC)
Goto Top
Hallo Biber,

Entschuldige bitte, dass meine Antworten immer so zögerlich kommen. Aber ich bin zur Zeit gut beschäftigt und da fehlt mir leider etwas die Zeit face-smile.

Die Ausgabe ist jetzt okay. Super, vielen Dank dafür! Kurz vor oder nach der Division (muss ich mir noch angucken) wird das Fenster aber plötzlich geschlossen, obwohl bei der Division eigentlich nicht 0 rauskommen kann und damit die Batch beendet würde.

Naja, wolln mal schaun, wird schon.


Gruß,
Admin-san.
Member: Biber
Biber Mar 12, 2007 at 16:22:31 (UTC)
Goto Top
Moin Admin-san,

gerade eben noch habe ich oben in meiner Skizze einen weiteren Tippfehler gesehen:

call GetAllDateTimeInfos.bat "%date%i" /s /q

muss natürlich heißen (ohne das "i" nach %date%)
call GetAllDateTimeInfos.bat "%date%i" /s /q

Also hier noch mal die (nach wie vor ungetestete Skizze im ganzen Satz:
:: ---------snipp DeinBatch.bat
@echo off & setlocal
....
If not exist d:\pfad\Zdate.jpg goto :eof
for /f %%i in ('dir /t:c d:\pfad\Zdate.jpg^|find /i "Zdate.jpg"') do call  GetAllDateTimeInfos.bat %%i /s /q  
Set FileCreationDate=%JJ%%MM%%TT%
call  GetAllDateTimeInfos.bat %date% /s /q
Set TodaysDate=%JJ%%MM%%TT%
Call GetAllDateTimeInfos.bat /u
REM jetzt sollten in %todaysDate% und in %FileCreationDate% jeweils Strings im ANSI-Date-Format "20070308" stehen  
Set /a Datediff=%FileCreationDate% - %TodaysDate%
If %DateDiff% LEQ 0  goto :eof
REM Andernfalls folgt jetzt das, was eigentlich ausgeführt werden soll
...
...

Nochmal sorry für die Schlamperei.

Gruss
Biber
Member: Admin-san
Admin-san Mar 13, 2007 at 11:28:43 (UTC)
Goto Top
Hallo Biber,

so, nu läuft dat!

Ich bekomme jetzt die richtigen ergebnisse und in Abhängigkeit zur Zdate.jpg wird auch die eigentliche Routine aufgerufen - oder eben nicht. Bin echt begeistert, wusste garnicht, dass man das überhaupt mit einer Batch-Datei erreichen kann.
Habe allerdings noch das löschen der Umgebungsvariablen (Call GetAllDateTimeInfos.bat %%i /u
) nach unten verschoben.

Eine Sache ist leider noch nicht so schön (Funktion ist halt nicht alles). Nach den Call-Befehlen nuß am Bildschirm immer eine Taste zum fortfahren gedrückt werden. Der Parameter "/q" unterdrückt zwar die Bildschirmausgabe, dennoch muß anschließend eine Taste betätigt werden um das Script fortzuführen.
Habe leider auch hierzu nichts entsprechendes finden können. Weißt Du (oder auch jemand anderer hier im Forum) Rat?

Vielen Dank nochmal für Deine große Hilfe!


Gruß,
Admin-san
Member: Biber
Biber Mar 13, 2007 at 12:40:43 (UTC)
Goto Top
Moin Admin-san,

freut mich, dass es jetzt soweit läuft...
Allerdings kann ich das Taste-Drücken-Müssen so auch nicht nachstellen...

Kannst Du bitte Deinen Batch as is noch mal posten?

Grüsse
Biber
Member: Admin-san
Admin-san Mar 13, 2007 at 13:35:33 (UTC)
Goto Top
Hallo Biber,

war offensichtlich mein Fehler, nachdem ich nochmals "meine" GetAllDateTimeInfos.bat mit Deiner ersetzt habe funktioniert es jetzt tadellos. Habe wohl ein paar Haltepunkte zu viel gesetzt bzw. nicht wieder entfernt.
Sorry, dafür.

Nun bin ich wirklich rundum glücklich. Hut ab, vielen Dank und allerbeste Wünsche nach Bremen.

Das Forum werde ich wieterempfehlen. Kann mich nicht daran erinnern, woanders mal so prompt und kompetent (mal prompt, mal kompetent aber nie, wie hier, beides zusammen) unterstützt worden zu sein. Letztendlich ist das Dein Verdienst, Biber.


Gruß,
Admin-san