patches0hulahan
Goto Top

Batchdatei zum erstellen von Ordnern für jeden Tag im Jahr

Guten Tag!

Also ich soll eine Batchdatei schreiben, die mir automatisch leere Ordner für jeden Tag im Jahr erstellt, mit der Bennenung TT.MM.JJJJ

for /L %%i IN (1,1,12) do for /L %%a in (1,1,30) do mkdir %%a.%%i.2011

Nur diese Zeile reicht ja schon um 360 Ordner zu erstellen, aber wie bekomme ich bei den einstelligen Tagen und Monaten eine Null davor?
Sonst lässt es sich ja nicht sinnvoll sortieren.

Und wie realisiere ich die korrekte Tagesanzahl für den entsprechenden Monat?

Bin da gerne bereit für jeden Monat ne einzelne Zeile zu schreiben, bräuchte dazu aber ein Beispiel oder eine Art Anleitung, weil ich wirklich keine Ahnung habe.

Komplettlösung ist zwar auch gerne gesehen, aber ich will ja gerne auch was lernen und verstehen.

Vielen Dank schonmal!
Kommentar vom Moderator Biber am 14.02.2011 um 12:21:18 Uhr
Zitat von @Patches0hulahan:
... , die mir automatisch leere Ordner für jeden Tag im Jahr erstellt, mit der Bennenung TT.MM.JJJJ
Set /a rgc+=1
#726

Content-ID: 160717

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

Ausgedruckt am: 08.11.2024 um 12:11 Uhr

Skyemugen
Skyemugen 14.02.2011 um 11:49:03 Uhr
Goto Top
Aloha,

reicht dir
mkdir %date%
nicht? =)

Das packst du als. bat einfach in den Taskplaner und lässt es so automatisch jeden Tag ausführen.

Oder musst du die Ordner komplett auf einmal erstellen?

greetz André
60730
60730 14.02.2011 um 11:57:39 Uhr
Goto Top
moin,

ganz banal zusammengeschustert - ohne Anspruch auf Eleganz...(und evtl. unnötige if else Konstrukte)

for /L %%i IN (1,1,12) do for /L %%a in (1,1,9) do mkdir 0%%a.%%i.2011
for /L %%i IN (1,1,12) do for /L %%a in (10,1,30) do mkdir %%a.%%i.2011

Nur gibt es weder den 30.2, noch hört das Jahr am 30.12 auf und 2011 wäre auf festverdrahtet.
daher auch von mir die Gegenfrage wozü das ganze?

Gruß
Patches0hulahan
Patches0hulahan 14.02.2011 um 11:58:12 Uhr
Goto Top
Nein, das reicht meinem Chef glaube ich nicht, trotzdem danke für die Idee.

Habe es jetzt mal erweitert und meine dAtei sieht jetzt so aus:

@echo off

for /L %%i IN (1,2,7) do for /L %%a in (1,1,31) do mkdir %%a.%%i.2011

for /L %%i IN (4,2,6) do for /L %%a in (1,1,30) do mkdir %%a.%%i.2011

for /L %%i IN (8,2,12) do for /L %%a in (1,1,31) do mkdir %%a.%%i.2011

for /L %%i IN (2,2,2) do for /L %%a in (1,1,28) do mkdir %%a.%%i.2011

for /L %%i IN (9,2,11) do for /L %%a in (1,1,30) do mkdir %%a.%%i.2011


Bischen umständlich, aber ich weiss halt nichtmal wie ich die Februarzeile leichter schreiben kann.

Immerhin werden jetzt für jeden Monat die richtige Anzahl an Ordnern erstellt, bräuchte aber bitte unbedingt noch Hilfe für die Sortierung, danke.
Skyemugen
Skyemugen 14.02.2011 um 12:08:01 Uhr
Goto Top
Zitat von @Patches0hulahan:
Nein, das reicht meinem Chef glaube ich nicht, trotzdem danke für die Idee.

Aloha,

glauben ist nichts, wissen ist alles ;)

greetz André
bastla
bastla 14.02.2011 um 12:15:17 Uhr
Goto Top
Hallo Patches0hulahan und willkommen im Forum!

Batch (alleine) ist für dieses Vorhaben nicht wirklich die richtige Wahl - daher im Zweifelsfall zumindest durch ein wenig VBS ergänzen:
@echo off & setlocal
set /a Jahr=2011

set G=%temp%\GetDates.vbs
>%G% echo J=WScript.Arguments(0):For i=DateSerial(J,1,1) To DateSerial(J,12,31):WScript.Echo FormatDateTime(i):Next

for /f %%i in ('cscript //nologo %G% %Jahr%') do md %%i  
Übrigens: Schöne Grüße an Deinen Chef, und frag ihn von mir, ob eine Schreibweise JJJJ-MM-TT nicht übersichtlicher (und zumindest besser sortierbar) wäre ...

Sollte er auch zu dieser Erkenntnis kommen, wäre gar nicht viel (=nur die letzte Zeile) zu ändern:
for /f "tokens=1-3 delims=." %%a in ('cscript //nologo %G% %Jahr%') do md %%c-%%b-%%a
Grüße
bastla
Patches0hulahan
Patches0hulahan 14.02.2011 um 12:28:11 Uhr
Goto Top
Vielen Dank!

Also ich habs jetzt auf die umständliche Weise hinbekommen und hab auch schon selbst die umgekehrte Schreibweise gekommen

@echo off


for /L %%m IN (1,1,9) do for /L %%t in (1,1,9) do mkdir 2011.0%%m.0%%t

for /L %%m IN (10,1,12) do for /L %%t in (1,1,9) do mkdir 2011.%%m.0%%t

for /L %%m IN (1,2,7) do for /L %%t in (10,1,31) do mkdir 2011.0%%m.%%t

for /L %%m IN (4,2,6) do for /L %%t in (10,1,30) do mkdir 2011.0%%m.%%t

for /L %%m IN (8,2,8) do for /L %%t in (10,1,31) do mkdir 2011.0%%m.%%t

for /L %%m IN (2,2,2) do for /L %%t in (10,1,28) do mkdir 2011.0%%m.%%t

for /L %%m IN (9,2,9) do for /L %%t in (10,1,30) do mkdir 2011.0%%m.%%t

for /L %%m IN (10,2,12) do for /L %%t in (10,1,31) do mkdir 2011.%%m.%%t

for /L %%m IN (11,2,11) do for /L %%t in (10,1,30) do mkdir 2011.%%m.%%t


Ich gucke mir deine Lösung jetzt aber auch nochmal genauer an.

Also meine Frage ändere ich dann hiermit auch schon als gelöst.