grisu-newbie
Goto Top

Variable date in cmd

Anfängerfrage cmd

Hallo, mein Name ist Christine.

Ich habe ein kleines Batchprogramm für die cmd (Windows XP SP2) geschrieben, welches meine Ordner auf D:\ auf eine USB-PLatte sichert.
Es werden bestimmte Order in das Verzeichnis Z:\backups\%date%-ordner kopiert.

Leider ergibt das dann Ordnernamen folgender Struktur: 12.03.2007-ordner. Ich würde aber gerne folgende Struktur haben: 2007-03-12-ordner. Kann man irgendwo in Windows das Format für %date% einstellen oder durch einen Befehl in der cmd umformatieren?

Besten Daynk im Voraus, falls mir jemand antwortet.

Lg Christine

Content-Key: 61495

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

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

Member: Dani
Dani Jun 15, 2007 at 20:15:50 (UTC)
Goto Top
Hallo Christine,
also so müsste es gehen:
@echo off

for /f "delims=. tokens=1,2,3" %%a in ('echo %date%') do set datum=%%c-%%b-%%a  
echo %datum%

pause
Ungetesteter Schnipsel.


Gruß
Dani
Member: Biber
Biber Jun 15, 2007 at 20:30:42 (UTC)
Goto Top
Moin Grisu-Newbie,

willkommen im Forum.
Fussnote zu Danis Lösung:
Du kannst es in der FOR /F-Klammer noch etwas vereinfachen.
..
for /f "delims=. tokens=1-3" %%a in (%date%) do set datum=%%c-%%b-%%a  
..

... funktioniert allerdings nur, wenn Du genau "weißt", dass das Datumsformat auf allen Rechnern, auf denen Dein Batch läuft das Format tt.mm.jjjj ist.

Für etwas robusteren Umgang mit "Datums- und Zeitvariablen im Batch" siehe das gleichnamige Tutorial dazu hier im Bereich Batch & Shell (siehe unten unter Beiträge im gleichen Bereich).

Grüße
Biber
Member: Grisu-Newbie
Grisu-Newbie Jun 15, 2007 at 21:14:26 (UTC)
Goto Top
Danke euch beiden für die Tipps.

Ich fürchte, ich hjabe mich unklar ausgedrückt. Ich wollte eine Lösung, die mir bei der verwendung von md %date% einen Ordner dieser Struktur erzeugt: YYYY-MM-DD.

Beispiel:
@echo off

for /f "delims=. tokens=1,2,3" %%a in ('echo %date%') do set datum=%%c-%%b-%%a
echo %datum%
md %date%

pause

Sollte also so einen Ordner erzeugen: 2007-06-15. Es wird aber wie immer 15.06.2007 erzeugt.

Any further hints?

lg Christine
Member: Biber
Biber Jun 15, 2007 at 21:29:41 (UTC)
Goto Top
Moin Grisu-Newbie,

nein nein, wir haben Dich schon richtig verstanden...

Nochmal ausführlich:
  • Nein, Du kannst das angezeigte Systemdatum nicht ohne Nebeneffekte in Deinem Wunschformat einstellen. Nicht die globale Variable %date% formatieren.
  • Aber: Du kannst ausweichen auf eine selbst definierte Variable namens %datum% oder %meindatum% oder im Extremfall auch tatsächlich %date% (letzteres wäre ganz äh-bäh, das tut man/frau nicht!)

Änderung bei Deinem Schnipsel:
For /f ... ...DO Set Datum=.....(DeinFormat)

REM md %date% ------->so nicht
md %Datum% <i> --------->so schon</i>

Solltest Du aus welchen Gründen auch immer auf den Variablennamen %date% bestehen, dann unbedingt die Option/die Anweisung "Setlocal" verwenden, damit diese Änderung auch nur in Deinem Batch wirkt und keine Seiteneffekte auftreten.
@echo off <b> & setlocal</b>
REM "not recommended" would be my further hint...  
for /f "delims=. tokens=1-3" %%a in (%date%) do set <b>date</b>=c-%%b-%%a  
echo %date%
md %date%

pause
Grüße
Biber
Member: Grisu-Newbie
Grisu-Newbie Jun 16, 2007 at 06:06:56 (UTC)
Goto Top
Es war meine Schuld, sorry. Ich hatte den Code nicht genau gelesen. Super, funkt!
Nein, ich bestehe nicht darauf, %date% zu verwenden.

Gruß Christine