In Skripten nutzen wir häufig das aktuelle Datum, um Backup-Ordner oder Dateinamen zu generieren. Damit die Sortierung im Explorer logisch bleibt, verwende ich das ISO-Format (YYYY-MM-DD).
🔍 Das Problem mit %DATE% #
Standardmäßig liefert Windows unter deutschen Einstellungen das Datum so: 06.05.2026.
Das ist für Ordnernamen unpraktisch, da:
- Punkte in Pfaden manchmal Probleme machen.
- Die Sortierung im Explorer nach dem Tag erfolgt (01.01.2026 käme vor dem 02.01.1990).
🛠 Die Lösung: String-Manipulation #
Ich „zerpflücke“ die Standard-Variable %DATE% und setzen sie neu zusammen.
Der Code-Baustein #
Code-Snippet
:: Extrahiert Jahr (6,4), Monat (3,2) und Tag (0,2)
set "MYDATE=%date:~6,4%-%date:~3,2%-%date:~0,2%"
So funktioniert die Zählung: #
Batch zählt die Zeichen in einer Zeichenkette ab 0. Bei 06.05.2026 ergibt das:
| Teil | Befehl | Ergebnis (Beispiel) |
| Jahr | %date:~6,4% | Start bei Stelle 6, nimm 4 Zeichen → 2026 |
| Monat | %date:~3,2% | Start bei Stelle 3, nimm 2 Zeichen → 05 |
| Tag | %date:~0,2% | Start bei Stelle 0, nimm 2 Zeichen → 06 |
📂 Anwendung im Skript #
Wenn du einen Ordner erstellen willst, der nach Jahr-Monat-Tag sortiert ist, nutzt du die neue Variable so:
Code-Snippet
:: 1. Variable definieren
set "MYDATE=%date:~6,4%-%date:~3,2%-%date:~0,2%"
:: 2. Ordner erstellen (Anführungszeichen schützen bei Leerzeichen!)
mkdir "C:\backup\%MYDATE%"
💡 Tipps & Tricks #
- ⚡ Schnelle Kommentare:
- Nutze
REMfür offizielle Erklärungen. - Nutze
::für visuelle Trenner oder kurze Notizen (Achtung:::nicht innerhalb von Klammern( )nutzen!).
- Nutze
- 🛡 Ordner-Check:Damit das Skript keinen Fehler ausgibt, falls der Ordner schon existiert (z. B. bei manuellem Zweitstart), setze ein
if not existdavor:if not exist "C:\Ziel\%MYDATE%" mkdir "C:\Ziel\%MYDATE%" - 🌍 Globale Sicherheit:Sollte das Skript mal auf einem Server mit englischen Regionaleinstellungen laufen, würde
%DATE%ein anderes Format liefern (z.B.Wed 05/06/2026). In diesem Fall müsste die Zählung im Skript angepasst werden.
