BAT ABLAUFTATUM PROBLEM (if, type)
ABLAUFDATUM
hi leute
ich will ein skript mit ablaufdatum schreiben
(also wie ne demo)
das ganze hab ich mir so vorgestellt
@echo off
if not exist C:\windows\date.txt echo %date% > C:\windows\date.txt
'also hir haben wir mal das datum des ersten starts gespeichert.....
if %date% (minus 5 tage) > type C:\windows\date.txt exit 'also wenn man das programm vor mehr als 5 tagen das erste mal gestartet hat dann soll es sich schießen (und das immer wieder bis der user drauf kommt das es abgelaufen ist)
(wenn nicht gehts ja normal weiter....)
...
...
(das problem ist das der if befeh natürlich net funktioniert)
bitte umm hilfe......
lg
clemo
hi leute
ich will ein skript mit ablaufdatum schreiben
(also wie ne demo)
das ganze hab ich mir so vorgestellt
@echo off
if not exist C:\windows\date.txt echo %date% > C:\windows\date.txt
'also hir haben wir mal das datum des ersten starts gespeichert.....
if %date% (minus 5 tage) > type C:\windows\date.txt exit 'also wenn man das programm vor mehr als 5 tagen das erste mal gestartet hat dann soll es sich schießen (und das immer wieder bis der user drauf kommt das es abgelaufen ist)
(wenn nicht gehts ja normal weiter....)
...
...
(das problem ist das der if befeh natürlich net funktioniert)
bitte umm hilfe......
lg
clemo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 83802
Url: https://administrator.de/contentid/83802
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
5 Kommentare
Neuester Kommentar
Mal abgesehn das sowas inner Batch Datei etwas .. ähm ... suboptimal ist weil man sie einfach Editieren und abändern kann.... Würds das Vergleichen vom Datum rein in Batch, aufwendig werden und nicht umbedingt richtig funktionieren. Ein temponäres vb-Skript wäre dort besser geeignet.
Aber wenns doch in Batch sein soll wäre das dann (zusammengefummelt) so (mal nur den eigentlichen teil Auszugsweise):
Einschränkungen (und weshalb das in vbs besser wäre):
Als Anmerkung wäre noch zu sagen das es auch egal wäre was man indie datei schreibt, wenn man das erstelldatum der Datei undnicht deren Inhalt auslesen würde.
Aber wie schon geschrieben ist der Sinn so einer Funktion in einer Batchdatei recht fraglich.
Aber wenns doch in Batch sein soll wäre das dann (zusammengefummelt) so (mal nur den eigentlichen teil Auszugsweise):
set maxdays=5
set /p olddate=<C:\windows\date.txt
set oldday=%olddate:~0,2%
set nowday=%date:~0,2%
if nowday lss %maxdays% then set /a nowday=nowday+30
set /a div=%nowday%-%oldday%
if %div% gtr %maxdays% then echo Zeit ist abgelaufen & Pause & goto:eof
echo Hier kommt der Rest der Batei
echo bla
echo bla
echo bla
set /p olddate=<C:\windows\date.txt
set oldday=%olddate:~0,2%
set nowday=%date:~0,2%
if nowday lss %maxdays% then set /a nowday=nowday+30
set /a div=%nowday%-%oldday%
if %div% gtr %maxdays% then echo Zeit ist abgelaufen & Pause & goto:eof
echo Hier kommt der Rest der Batei
echo bla
echo bla
echo bla
Einschränkungen (und weshalb das in vbs besser wäre):
- Funktioniert nur richtig wenn der erste start zwischen dem 1. und 23. eines Monats war. Beim überschreiten der Monatsgrenze wird davon ausgegangen das der Monat 30 Tage hat. Würde also bei Monaten mit 31 Tagen und dem Februar nicht richtig mit 5 Tagen funktionieren.
- Funktioniert durch das :~0,2 nur richtig wenn die Datumsformatierung das Datumsformat die Tage in den ersten beiden Zeichen hätte, also z.B. TT.MM.JJ bzw. TT-MM-JJ.
Als Anmerkung wäre noch zu sagen das es auch egal wäre was man indie datei schreibt, wenn man das erstelldatum der Datei undnicht deren Inhalt auslesen würde.
Aber wie schon geschrieben ist der Sinn so einer Funktion in einer Batchdatei recht fraglich.
Dann würde ich das dennoch besser in vbs machen. vbs und vba unterscheiden sich ncith sehr. Schau dir mal einige andere Beiträge hier an indennen es um Datumssachen geht. Dort siesht du dan wie das im Prinzip funktioniert. Wen du dan noch ahnung von vba hast ist eine anpasung nicht schwer.
Ein beispiel dafür siehst du hier:
Bat Programm - Anzahl Tage seit bestimmtem Datum ermitteln
Bzw wenn du das die ausgabe in ner Variable haben willst dann als letzte zeile so:
FOR /F "delims=" %%i in ('cscript //nologo %temp%\DD.vbs') do set div=%%i
Ein beispiel dafür siehst du hier:
Bat Programm - Anzahl Tage seit bestimmtem Datum ermitteln
Bzw wenn du das die ausgabe in ner Variable haben willst dann als letzte zeile so:
FOR /F "delims=" %%i in ('cscript //nologo %temp%\DD.vbs') do set div=%%i
Als editor kanst du das normale notepad von windows nehmen. Wie bei Batch auch. Einfach eintippen und dann das ganze halt beim speichern mit der endung vbs statt text versehen.
Aber in diesem beispiel wird die vbs Datei aus der Batch datei heraus erzeugt. Die kanst du ja ins %temp% Verzeichnis erzeugen lassen und danach wieder löschen wenn sie nicht mehr gebraucht wird. Es gibt bessere Beispiele wie man mit temponären vbs dateien in Batch arbeiten kann aber auf die shcnelle hab ich grade keins gefunden.
Aber in diesem beispiel wird die vbs Datei aus der Batch datei heraus erzeugt. Die kanst du ja ins %temp% Verzeichnis erzeugen lassen und danach wieder löschen wenn sie nicht mehr gebraucht wird. Es gibt bessere Beispiele wie man mit temponären vbs dateien in Batch arbeiten kann aber auf die shcnelle hab ich grade keins gefunden.