clemoclmeo
Goto Top

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

Content-Key: 83802

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

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: miniversum
miniversum 24.03.2008 um 20:19:55 Uhr
Goto Top
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):

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

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.
Mitglied: clemoCLMEO
clemoCLMEO 25.03.2008 um 09:31:10 Uhr
Goto Top
JA DANKE


das weiß ich auch ich kann nur leider nichts anderes als
bat und vba

aber ich hab ein bat zu exe converter und dan kanns keiner mehr rausbekommen....


lg
clemo
Mitglied: miniversum
miniversum 25.03.2008, aktualisiert am 18.10.2012 um 18:35:32 Uhr
Goto Top
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
Mitglied: clemoCLMEO
clemoCLMEO 25.03.2008 um 11:20:31 Uhr
Goto Top
danke werd mir das mal anschauen


ich hoff der editor kostet nichts!!!
Mitglied: miniversum
miniversum 25.03.2008 um 11:27:15 Uhr
Goto Top
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.