DP: aktuelle Zeit und Datum in eine Variable?

[Doppelposting, bitte in Windows NT/2000/XP antworten, Danke!]

Hi Experten,

ich will für eine Backup-Routine eine Historie ermöglichen. Dazu möchte ich automatisch ein Verzeichnis erstellen mit dem aktuellen Datum + evtl. Zeit als Verzeichnisnamen.
Wie bekomme ich nun Datum und Zeit in eine Variable bzw. wie bekomme ich das Verzeichnis hin?

Bin für jeden noch so kleinen Hinweis dankbar!

Danke

Tom

Hi,

wenn Du Windows 2000 oder XP im Einsatz hast, dann ist das ganz einfach.

Du kannst dann nach ausführen dieses Scripts z.B. machen

MD C:\Backup%DateFmt(JJJJ-MM-TT)%
-> Ergebnis: C:\Backup\2002-10-22

MD C:\Backup%DateFmt(TT.MM.JJJJ)%
-> Ergebnis: C:\Backup\22.10.2002

Gruß
Matthias

***schnipp***

@ECHO OFF

REM ------------------------------------------------------------------------------------------------------------------------------------------------------

SET DateFmt(JJJJ)=%DATE:~9,4%
SET DateFmt(MM)=%DATE:~6,2%
SET DateFmt(TT)=%DATE:~3,2%

IF „%DateFmt(TT):~0,1%“ EQU „0“ SET DateFmt(T)=%DateFmt(TT):~1,1%
IF „%DateFmt(TT):~0,1%“ NEQ „0“ SET DateFmt(T)=%DateFmt(TT):~0,2%

IF „%DateFmt(MM):~0,1%“ EQU „0“ SET DateFmt(M)=%DateFmt(MM):~1,1%
IF „%DateFmt(MM):~0,1%“ NEQ „0“ SET DateFmt(M)=%DateFmt(MM):~0,2%

SET DateFmt(JJJJMMTT)=%DateFmt(JJJJ)%%DateFmt(MM)%%DateFmt(TT)%
SET DateFmt(JJJJ-MM-TT)=%DateFmt(JJJJ)%-%DateFmt(MM)%-%DateFmt(TT)%
SET DateFmt(JJJJ-MM)=%DateFmt(JJJJ)%-%DateFmt(MM)%
SET DateFmt(TT.MM.JJJJ)=%DateFmt(TT)%.%DateFmt(MM)%.%DateFmt(JJJJ)%

SET DateFmt(M/T/JJJJ)=%DateFmt(M)%/%DateFmt(T)%/%DateFmt(JJJJ)%

GOTO ENDE

REM ------------------------------------------------------------------------------------------------------------------------------------------------------

FEHLER

GOTO ENDE

REM ------------------------------------------------------------------------------------------------------------------------------------------------------

ENDE

***schnapp***

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Matthias,

wie um alles in der Welt bist Du auf diese Lösung gekommen? Ich habe versucht, das ganze zu verstehen, bin aber kläglich gescheitert.
Vorallem das %date:~xx%, das überreiß ich gar net.

*** ganztieferstaunt ***

Tom

Hi Tom,

dann schau Dir doch mal die Hilfe zum SET-Befehl an.

SET /?

Mit Windows 2000 sind einige Befehlserweiterungen dazu gekommen. Man kann jetzt mittels SET Teilstrings rauskopieren (ähnlich wie LEFT, RIGHT, MID) und auch das ersetzen von Text in Umgebungsvariablen funktioniert jetzt.
Außderdem kann mit SET jetzt richtig rechnen. Mit SET /A kann man addieren, … multiplizieren, … usw.

Gruß
Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

wie bekomme ich es hin, dass eine Datei generiert wird?
xcopy „C:\temp\backup.txt“ C:\TEST%DateFmt(JJJJ-MM-TT)% /c /s /r /i >C:\TEST\log.txt

hier wird dann immer auf eine Eingabe gewartet. D= Dokument, V=Verzeichnis

Kann ich auch die Uhrzeit mit ins Spiel bringen?

danke
Steffi

wenn Du Windows 2000 oder XP im Einsatz hast, dann ist das
ganz einfach.

Du kannst dann nach ausführen dieses Scripts z.B. machen

MD C:\Backup%DateFmt(JJJJ-MM-TT)%
-> Ergebnis: C:\Backup\2002-10-22

MD C:\Backup%DateFmt(TT.MM.JJJJ)%
-> Ergebnis: C:\Backup\22.10.2002

Gruß
Matthias

***schnipp***

@ECHO OFF

REM

SET DateFmt(JJJJ)=%DATE:~9,4%
SET DateFmt(MM)=%DATE:~6,2%
SET DateFmt(TT)=%DATE:~3,2%

IF „%DateFmt(TT):~0,1%“ EQU „0“ SET
DateFmt(T)=%DateFmt(TT):~1,1%
IF „%DateFmt(TT):~0,1%“ NEQ „0“ SET
DateFmt(T)=%DateFmt(TT):~0,2%

IF „%DateFmt(MM):~0,1%“ EQU „0“ SET
DateFmt(M)=%DateFmt(MM):~1,1%
IF „%DateFmt(MM):~0,1%“ NEQ „0“ SET
DateFmt(M)=%DateFmt(MM):~0,2%

SET
DateFmt(JJJJMMTT)=%DateFmt(JJJJ)%%DateFmt(MM)%%DateFmt(TT)%
SET
DateFmt(JJJJ-MM-TT)=%DateFmt(JJJJ)%-%DateFmt(MM)%-%DateFmt(TT)%
SET DateFmt(JJJJ-MM)=%DateFmt(JJJJ)%-%DateFmt(MM)%
SET
DateFmt(TT.MM.JJJJ)=%DateFmt(TT)%.%DateFmt(MM)%.%DateFmt(JJJJ)%

SET
DateFmt(M/T/JJJJ)=%DateFmt(M)%/%DateFmt(T)%/%DateFmt(JJJJ)%

GOTO ENDE

REM

FEHLER

GOTO ENDE

REM

ENDE

wenn Du nur eine Datei kopieren möchtest, dann verwende doch „COPY“ :wink:. Falls das Verzeichnis noch nicht vorhanden ist, dann vorher ein MD machen.
Oder
ECHO V | XCOPY … dann wird immer V gesendet und die Frage automatisch beantwortet.

Das mit der Uhrzeit funktioniert im Prinzip genauso wie mit dem Datum. Du musst halt %TIME% zerpflücken. Aber ACHTUNG: Windows kann keine „:“ (Doppelpunkte) als Datei- und Verzeichnisnamen verwenden !!!

Gruß
Matthias

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]