Automatisch Ordner und Unterordner anlegen mit historischem Datum (Schaltjahre berücksichtigen)
Hallo zusammen,
ich möchte in einem Zielverzeichnis eine bestimmte Ordnerstruktur mit Unterordnern anlegen, die ein fortlaufendes historisches Datum tragen sollen. Die Struktur soll wie folgt aussehen:
...Zielverzeichnis\Jahr\Jahr_Monat_Tag\
also
...Zielverzeichnis\1951\1951_01_01\
Es gibt zwar unzählige Beschreibungen wie man Ordner mit aktuellem Datum anlegt, aber für historische Daten konnte ich keine brauchbare Beschreibung finden.
Im Idealfall möchte ich in der Batch Datei nur das Startjahr und das Endjahr eingeben müssen. An sich wäre das überhaupt kein Problem für mich, gäbe es keine Schaltjahre.
Gibt es da eine Möglichkeit beim Anlegen der "Tagesordner" den Kalender zu berücksichtigen oder muss ich die ganzen Schaltjahressonderfälle in die Schleifen einbauen?
Besten Dank schonmal!
Nimrodi
ich möchte in einem Zielverzeichnis eine bestimmte Ordnerstruktur mit Unterordnern anlegen, die ein fortlaufendes historisches Datum tragen sollen. Die Struktur soll wie folgt aussehen:
...Zielverzeichnis\Jahr\Jahr_Monat_Tag\
also
...Zielverzeichnis\1951\1951_01_01\
Es gibt zwar unzählige Beschreibungen wie man Ordner mit aktuellem Datum anlegt, aber für historische Daten konnte ich keine brauchbare Beschreibung finden.
Im Idealfall möchte ich in der Batch Datei nur das Startjahr und das Endjahr eingeben müssen. An sich wäre das überhaupt kein Problem für mich, gäbe es keine Schaltjahre.
Gibt es da eine Möglichkeit beim Anlegen der "Tagesordner" den Kalender zu berücksichtigen oder muss ich die ganzen Schaltjahressonderfälle in die Schleifen einbauen?
Besten Dank schonmal!
Nimrodi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 269735
Url: https://administrator.de/forum/automatisch-ordner-und-unterordner-anlegen-mit-historischem-datum-schaltjahre-beruecksichtigen-269735.html
Ausgedruckt am: 15.05.2025 um 02:05 Uhr
4 Kommentare
Neuester Kommentar

Moin,
mit Powershell schnell gemacht
Gruß jodel32
mit Powershell schnell gemacht
$folder = 'c:\ordner'
[int]$start = read-Host "Startjahr eingeben"
[int]$end = read-Host "Endjahr eingeben"
($start)..($end) | %{
md "$folder\$_"
$d = get-date "01.01.$_"
while($d -lt (get-date "01.01.$_").AddYears(1)){
md "$folder\$_\$($d.toString('yyyy\_MM\_dd'))"
$d = $d.AddDays(1)
}
}
Hallo Nimrodi, willkommen im Forum.
Auch mit Batch ist das machbar, allerdings etwas komplizierter.
ECHO und PAUSE kannst du rausschmeißen, um den Code scharf zu schalten.
Grüße
rubberman
EDIT Zeile 15 korrigiert, siehe unten ...
Auch mit Batch ist das machbar, allerdings etwas komplizierter.
@echo off &setlocal
set "dest=Zielverzeichnis"
set /p "ys=Startjahr: "
set /p "ye=Endjahr: "
setlocal EnableDelayedExpansion
for /l %%i in (!ys! 1 !ye!) do (
for /l %%j in (101 1 112) do (
set "m=%%j"
call :DaysInMonth %%i !m:~-2!
set /a "d = 100+!errorlevel!"
for /l %%k in (101 1 !d!) do (
set "d=%%k"
ECHO md !dest!\%%i\%%i_!m:~-2!_!d:~-2!
)
)
)
PAUSE
exit /b
:DaysInMonth YY MM
setlocal DisableDelayedExpansion
set /a "YY = %~1, MM = 100%~2 %% 100"
set /a "n = 30+!(((MM&9)+6) %% 7)+!(MM^2)*(!(YY %% 4)-!(YY %% 100)+!(YY %% 400)-2)"
endlocal &exit /b %n%
Grüße
rubberman
EDIT Zeile 15 korrigiert, siehe unten ...