Batch-Datei zur Erstellung von Ordnern nach einem ganz besonderen System
Guten Tag!
Ich möchte eine Batch-Datei erstellen, die folgendes tut:
Ich möchte ganz viele Ordner erstellt bekommen, die einem Muster folgen. Der Ordnername soll der zu Beginn eine vierstellige Nummer, dann ein Leerzeichen, dann einen Bindestrich, dann ein bestimmtes Datum haben. Dann sollen immer weiter Ordner erstellt werden, die dem Muster folgen:
0001 - 2000-01-01
0002 - 2000-01-02
... usw.
Natürlich sollen die richtigen Nummern zum jeweils richtigen Datum passen.
Sprich: Wenn der Januar 2000 genau 31 Tage hatte, dann soll es auch 0031 - 2000-01-31 und dann erst 0032 - 2000-02-01 geben ... usw.
Ich möchte zudem gerne, dass die damit erstellten Ordner sofort in ein jeweils passendes Unterverzeichnis verschoben werden:
Dieses soll so aussehen
"2000-01 - Januar 2000"
"2000-02 - Februar 2000"
... usw.
Wichtig wäre auch noch, dass ich zuvor "gefragt" werde oder "einfach" eingeben kann, welches Jahr ich erstellen möchte ... Ob dazu die Eingabe der Zahl nötig ist, mit der ich starten möchte - oder das Programm selbst weiß, dass das Jahr 2000 zum Beispiel 366 Tage hatte, da bin ich mir unsicher und überlasse es den Fachleuten - also Euch.
Vielen Dank für Eure Hilfe!
Hintergrund meiner Frage: Ich stehe vor dem Nichts und kann daher auch keine Programmierer bezahlen ... Daher bitte ich hier um Hilfe. Ich habe schon verschiedene Hilfen für Ordner mit Datum im Netz gefunden - aber ich scheitere an den vier Nummern zuvor... Ich hatte dafür sogar einmal eine batch-datei "bekommen" / "gefunden" - aber die ist mit auf den geklauten Festplatten ... :'(
Also: Vielen Dank!!!!
Florian.
Ich möchte eine Batch-Datei erstellen, die folgendes tut:
Ich möchte ganz viele Ordner erstellt bekommen, die einem Muster folgen. Der Ordnername soll der zu Beginn eine vierstellige Nummer, dann ein Leerzeichen, dann einen Bindestrich, dann ein bestimmtes Datum haben. Dann sollen immer weiter Ordner erstellt werden, die dem Muster folgen:
0001 - 2000-01-01
0002 - 2000-01-02
... usw.
Natürlich sollen die richtigen Nummern zum jeweils richtigen Datum passen.
Sprich: Wenn der Januar 2000 genau 31 Tage hatte, dann soll es auch 0031 - 2000-01-31 und dann erst 0032 - 2000-02-01 geben ... usw.
Ich möchte zudem gerne, dass die damit erstellten Ordner sofort in ein jeweils passendes Unterverzeichnis verschoben werden:
Dieses soll so aussehen
"2000-01 - Januar 2000"
"2000-02 - Februar 2000"
... usw.
Wichtig wäre auch noch, dass ich zuvor "gefragt" werde oder "einfach" eingeben kann, welches Jahr ich erstellen möchte ... Ob dazu die Eingabe der Zahl nötig ist, mit der ich starten möchte - oder das Programm selbst weiß, dass das Jahr 2000 zum Beispiel 366 Tage hatte, da bin ich mir unsicher und überlasse es den Fachleuten - also Euch.
Vielen Dank für Eure Hilfe!
Hintergrund meiner Frage: Ich stehe vor dem Nichts und kann daher auch keine Programmierer bezahlen ... Daher bitte ich hier um Hilfe. Ich habe schon verschiedene Hilfen für Ordner mit Datum im Netz gefunden - aber ich scheitere an den vier Nummern zuvor... Ich hatte dafür sogar einmal eine batch-datei "bekommen" / "gefunden" - aber die ist mit auf den geklauten Festplatten ... :'(
Also: Vielen Dank!!!!
Florian.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 485492
Url: https://administrator.de/forum/batch-datei-zur-erstellung-von-ordnern-nach-einem-ganz-besonderen-system-485492.html
Ausgedruckt am: 23.04.2025 um 01:04 Uhr
9 Kommentare
Neuester Kommentar

Moin, moin.
Es ist mMn nicht sehr pfiffig Ordner zu erstellen und sie dann zu verschieben.
Lieber gleich die richtige Struktur erzeugen zumal der md/mkdir Befehl in aktuellen Windows Versionen mit standardmäßig aktivierten Erweiterungen die nötigen Zwischenverzeichnisse in einem Schritt erstellt.
Wenn das mit Batch passieren soll, schau dir mal die Date/Time Funktionen von Ritchie Lawrence Batch Library an.
Einfacher geht es mit einer aktuellen Script Sprache wie PowerShell.
Soll die Tages Nummerierung pro Jahr oder fortlaufend ab 2000-01-01 erfolgen?
bei 4 Stellen wäre dann
Schluss.
Gruß
LotPings
Es ist mMn nicht sehr pfiffig Ordner zu erstellen und sie dann zu verschieben.
Lieber gleich die richtige Struktur erzeugen zumal der md/mkdir Befehl in aktuellen Windows Versionen mit standardmäßig aktivierten Erweiterungen die nötigen Zwischenverzeichnisse in einem Schritt erstellt.
Wenn das mit Batch passieren soll, schau dir mal die Date/Time Funktionen von Ritchie Lawrence Batch Library an.
Einfacher geht es mit einer aktuellen Script Sprache wie PowerShell.
Soll die Tages Nummerierung pro Jahr oder fortlaufend ab 2000-01-01 erfolgen?
bei 4 Stellen wäre dann
PoSh> (get-date 2000-01-01).AddDays(9999)
Dienstag, 18. Mai 2027 00:00:00
Schluss.
Gruß
LotPings

Den folgenden Code anpassen ($Basefolder/$Day in x..y) und in einer Datei mit der Endung .ps1 abspeichern und mit PowerShell ausführen.
Das erzeugt eine solche Struktur:
$BaseFolder = 'A:\Test'
# Jahr 2019 = ForEach($Day in 6941..7305){
ForEach($Day in 1..99){
MD ('{0}\{1:yyyy\\yyyy-MM - MMMM yyyy\\}{2:D4} - {1:yyyy-MM-dd}' -f `
$BaseFolder,(Get-Date 1999-12-31).AddDays($Day),$Day) #-WhatIf
}
Das erzeugt eine solche Struktur:
PoSh> tree A:\Test
A:\TEST
└───2000
├───2000-01 - Januar 2000
│ ├───0001 - 2000-01-01
│ ├───0002 - 2000-01-02
│ ├───0003 - 2000-01-03
│ ├───0004 - 2000-01-04
%<............................>%
│ ├───0029 - 2000-01-29
│ ├───0030 - 2000-01-30
│ └───0031 - 2000-01-31
├───2000-02 - Februar 2000
│ ├───0032 - 2000-02-01
│ ├───0033 - 2000-02-02
%<............................>%
│ ├───0058 - 2000-02-27
│ ├───0059 - 2000-02-28
│ └───0060 - 2000-02-29
├───2000-03 - März 2000
│ ├───0061 - 2000-03-01
│ ├───0062 - 2000-03-02
│ ├───0063 - 2000-03-03
%<............................>%
│ ├───0089 - 2000-03-29
│ ├───0090 - 2000-03-30
│ └───0091 - 2000-03-31
└───2000-04 - April 2000
├───0092 - 2000-04-01
├───0093 - 2000-04-02
├───0094 - 2000-04-03
%<............................>%
└───0099 - 2000-04-08

Oder wenn man nicht mit erst zu berechnenden Zahlen hantieren möchte
$year = 2019
$folder = 'D:\Basefolder'
0..(@{$true=365;$false=364}[[datetime]::IsLeapYear($year)]) | %{
md ("{0}\{1}\{2:yyyy-MM - MMMM yyyy}\{3:D4} - {2:yyyy\-MM\-dd}" -f $folder,$year,(get-date -Year $year -Month 1 -Day 1).AddDays($_),($_+1))
}

Moin moin,
coding der Knackpunkt bei der Tagesnumerierung war doch, das die vom 1.1.2000 durchlaufen sollte,
nicht pro Jahr - da hätte ja ein simples (Get-Date).DayOfYear ausgereicht.
coding der Knackpunkt bei der Tagesnumerierung war doch, das die vom 1.1.2000 durchlaufen sollte,
nicht pro Jahr - da hätte ja ein simples (Get-Date).DayOfYear ausgereicht.
2000..2027|ForEach-Object{
[PSCustomObject]@{
Jahr=$_
'Jan 1, Tage kum'=((Get-Date -year $_ -month 1 -Day 1) - (Get-Date 1999-12-31)).Days
'Dez 31, Tage kum'=((Get-Date -year $_ -month 12 -Day 31) - (Get-Date 1999-12-31)).Days
'Dez 31, DoY'=(Get-Date -year $_ -month 12 -Day 31).DayOfYear
}
}
Jahr Jan 1, Tage kum Dez 31, Tage kum Dez 31, DoY
---- --------------- ---------------- -----------
2000 1 366 366
2001 367 731 365
2002 732 1096 365
2003 1097 1461 365
2004 1462 1827 366
2005 1828 2192 365
2006 2193 2557 365
2007 2558 2922 365
2008 2923 3288 366
2009 3289 3653 365
2010 3654 4018 365
2011 4019 4383 365
2012 4384 4749 366
2013 4750 5114 365
2014 5115 5479 365
2015 5480 5844 365
2016 5845 6210 366
2017 6211 6575 365
2018 6576 6940 365
2019 6941 7305 365
2020 7306 7671 366
2021 7672 8036 365
2022 8037 8401 365
2023 8402 8766 365
2024 8767 9132 366
2025 9133 9497 365
2026 9498 9862 365
2027 9863 10227 365

Zitat von @77559:
Moin moin,
coding der Knackpunkt bei der Tagesnumerierung war doch, das die vom 1.1.2000 durchlaufen sollte,
nicht pro Jahr -
Kann ich nirgendwo in seinem Post so nachlesen.Moin moin,
coding der Knackpunkt bei der Tagesnumerierung war doch, das die vom 1.1.2000 durchlaufen sollte,
nicht pro Jahr -
Er schrieb ja das er das Jahr selbst bestimmen möchte welches er erzeugen will. Zitat:
Wichtig wäre auch noch, dass ich zuvor "gefragt" werde oder "einfach" eingeben kann, welches Jahr ich erstellen möchte ...
Naja jeder wie er will und mag, kann er ja selbst entscheiden .