motorcross
Goto Top

Batch. Auf das aktuelle Datum ... Tage aufrechnen und das Datum dann in .txt Datei schreiben

Hallo Administratoren

ich bin gerade dabei einen Lizenz Script in Batch zu schreiben.
Also zuerst wird durch "set /p a=" festgelegt wie viele Tage die Version gültig ist.
Mein Problem ist aber, dies mit dem aktuellen Datum zu verrechnen.
Hier ein Beispiel:
Heute ist der 31.01.2010 und die Lizenz soll 100 Tage gültig sein.
So jetzt sollen diese 100 Tage auf das Datum im Beispiel aufgerechnet werden und anschließend in eine .txt Datei abgespeichert werden.
Ich habe aber keine Ahnung wie ich das programmieren soll.
Wenn es möglich wäre, könnte man ja auch die verschieden langen Monate mit einberechnen.
Ich würde mich sehr freuen wenn jemand eine Idee hat.
Gruß Motorcross

Content-ID: 134783

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

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

AndreasBrecht
AndreasBrecht 31.01.2010 um 12:06:43 Uhr
Goto Top
Du kannst mit VB sript auf die Funktion now zugreifen. Die liefert Dir das aktuelle Datum und Uhrzeit dazu zählst Du 100 dazu (da ist die Länger der Monate belanglos weil es Tage sind face-smile) und dann kannst Du (musst Du aber nicht) für die Optik entweder mit Left oder mit FormatDateTime noch die Minuten und Sekunden abschneiden.
TsukiSan
TsukiSan 31.01.2010 um 12:10:22 Uhr
Goto Top
und so ausgeschrieben, wie AndreasBrecht es meint
	Set FSO = CreateObject("Scripting.FileSystemObject")  
	Set MyFile = FSO.CreateTextFile("c:\Zeit.txt", true)  
	MyFile.WriteLine (Left(now + 100,11))
	MyFile.Close

in Batch wird es etwas mehr an Schreiberei.

Gruss
Tsuki
Motorcross
Motorcross 31.01.2010 um 12:12:21 Uhr
Goto Top
gibt es den auch eine Moglichkeit in Batch?
Ich brauche unbedingt Hilfe! (vielleicht hat bastla ja eine Idee)?
TsukiSan
TsukiSan 31.01.2010 um 12:29:44 Uhr
Goto Top
Naja, man könnte natürlich tricksen face-wink
Du erstellst eine Batch-Datei mit folgendem Code
>"C:\MeinDatum.vbs" Echo Set FSO = CreateObject("Scripting.FileSystemObject")  
>>"C:\MeinDatum.vbs" Echo Set MyFile = FSO.CreateTextFile("c:\Zeit.txt", true)  
>>"C:\MeinDatum.vbs" Echo MyFile.WriteLine (Left(now + 100,11))  
>>"C:\MeinDatum.vbs" Echo MyFile.Close  
Call "C:\MeinDatum.vbs"  
del C:\MeinDatum.vbs /q 

for %%i in ("c:\Zeit.txt") do Echo %%i  

Danach musst du nur noch die erste Zeile in Batch auslesen und dir Folgeschritte überlegen.
Dann wäre Batch und VBS vereint face-wink

Das Rechnen mit Datum in VBS o.ä. geht einfacher als in Batch!
Aber mal sehen, was bastla oder biber zaubern face-smile

Gruss
Tsuki

<Edit>
Zeile 5 vervollständigt
</Edit>
Motorcross
Motorcross 31.01.2010 um 12:33:04 Uhr
Goto Top
Hallo,
was bedeutet in der 6. Zeile das /q ?
TsukiSan
TsukiSan 31.01.2010 um 12:36:43 Uhr
Goto Top
Hallo Motocross,

bevor ich zu "/q" komme muss in Zeile 5 noch
Call "C:\MeinDatum.vbs"  
eingefügt werden. Sorry!

Das "/q" bedeutet, dass ohne Nachfrage die erstellte "C:\MeinDatum.vbs" gelöscht wird (silent oder quiet)

Hoffe, es hilft dir!

Gruss
Tsuki
Motorcross
Motorcross 31.01.2010 um 12:47:55 Uhr
Goto Top
Ja es hilft mir,eine Frage habe ich aber noch.
Ist dort eigerechnet das der Feburar nur 28 Tage hat?
Gruß Motorcross
TsukiSan
TsukiSan 31.01.2010 um 12:49:53 Uhr
Goto Top
bei der Datumsrechnung in VBS spielt die Länge der Monate keine Rolle.
Deswegen ist es ja einfacher. Man muss sich keinen Kopf darüber machen.
In Batch musst du das alles händisch machen und für die nächsten Jahre irgendwie selbst erfassen.

Gruss
Tsuki
AndreasBrecht
AndreasBrecht 31.01.2010 um 12:52:20 Uhr
Goto Top
Nochmal: Du addiesrt die Anzahl der Tage (100 und nicht 3 Monate und ein paar gequetschte) zu dem aktuellen Datum, das iÜ als serielle Zehl behandelt wird (und nur für uns dumme Humanoide in Jahr Moat und Tag übersetzt wird)
TsukiSan
TsukiSan 31.01.2010 um 12:58:49 Uhr
Goto Top
Also, ganz einfach:
Was macht VBS, wenn ich
now + 3
schreibe?
Es rechnet zum heutigen Tage (31.01.2010) 3 Tage dazu. Heißt, das Ergebnis wäre Mittwoch, 03.02.2010.
VBS weiß die Anzahl der Tage im Monat und auch wann Schaltjahre sind (bis natürlich zu einem gewissen Zeitpunkt irgendwann in der Zukunf face-wink )
Es rechnet nur mit den Tagen!!!!! wie es die Monate und selbst Jahre im Detail berechnet, weiß ich nicht. Kann ich nur vermuten, dass es da viele Ifs und Elses und Selects und Modulas etc. geben kann.
Spielt aber für uns keine Rolle.VBS tut es einfach. face-smile
In deinem Fall mit der Zahl "100" brauchst du dir keine Gedanken zu machen, dass das Ergebnis nicht stimmt!

Gruss
Tsuki
bastla
bastla 31.01.2010 um 14:18:28 Uhr
Goto Top
@AndreasBrecht
... für die Optik entweder mit Left oder mit FormatDateTime noch die Minuten und Sekunden abschneiden ...
... oder gleich "Date" anstelle von "Now" verwenden.

Grüße
bastla
bastla
bastla 31.01.2010, aktualisiert am 18.10.2012 um 18:41:00 Uhr
Goto Top
@tsuki
"Batch-Zauberei" hätte ich erst gar nicht versucht (das war damals nur zum Spielen face-wink und nicht wirklich von mir verbrochen) - für Datumsberechnungen ist VBS definitiv die bessere Wahl, daher wäre es auch bei mir ein (temporäres) VBScript geworden ...

... wobei ich allerdings nur den Berechnungsteil ausgelagert und das Datum zur weiteren Verwendung wieder an den Batch zurückgegeben hätte, also etwa:
set "G=%temp%\GetDate.vbs"  
>"%G%" echo WScript.Echo Date + 100  
for /f %%i in ('cscript //nologo "%G%"') do set "Datum=%%i"  
del "%G%"  
Noch als Anmerkung: Das Script in "C:\MeinDatum.vbs" zu speichern dürfte in vielen Fällen an fehlenden Schreibrechten scheitern, daher besser "%temp%" verwenden ...

Grüße
bastla
TsukiSan
TsukiSan 01.02.2010 um 03:19:43 Uhr
Goto Top
@bastla,

das tolle an deinen Scripten ist (und an bibers auch!) wie Sachen nochmals "weggekürzt" werden können face-smile

Vielen Dank!

@Motorcross
ich hoffe, meine Antwort in meiner PM an dich hilft! Wenn nicht, einfach weiterfragen. So lernen wir gemeinsam face-wink

Gruss
Tsuki
Motorcross
Motorcross 01.02.2010 um 09:31:54 Uhr
Goto Top
Ja genau. ich wollte euch allen noch einmal Danken!
Gruß Motorcross