tob1as
Goto Top

Batch um Ordnerstruktur samt Unterordner zu erstellen

Hallo zusammen
Ich brauche ein Batchfile um folgende Ordner zu erstellen:

-2006
-2007
--01
--02
--03
--04
-- ...
-2008
- ...
-2017

Also 2006-20017 mit jeweils 12 Ordner 01-12 drin!

Wie mache ich das am besten?

Content-Key: 73407

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

Printed on: April 18, 2024 at 03:04 o'clock

Member: Biber
Biber Nov 13, 2007 at 09:10:49 (UTC)
Goto Top
Moin tob1as,

Also 2006-20017 mit jeweils 12 Ordner 01-12 drin!
Tja, wenn Du meinst, so langfristig planen zu müssen...
Dann also vom CMD-Prompt aus:
>for /l %i in (2006,1,20017) do @for /l %j in (1,1,12) do @if %j  LEQ 9 (md %i\0%j) ELSE md %i\%j

Falls Du es vorher lieber erst testen willst:
>for /l %i in (2006,1,20017) do @for /l %j in (1,1,12) do @if %j  LEQ 9 (@echo md %i\0%j) ELSE @echo md %i\%j

Grüße
Biber

P.S. Verzeichnisse in Zählschleifen anzulegen ist reizvoll, aber ich habe auch schon mal einen Verzeichnisstruktur-Anlegen-Batch geschrieben, der 24 Tage lang gelaufen ist (unter Win2000) und 4 GByte an (leeren) Verzeichnissen angelegt hat.
Bei Win XP war übrigens eher (vor Ende des Batches) Feierabend.
Member: tob1as
tob1as Nov 13, 2007 at 09:32:15 (UTC)
Goto Top
Hallo Biber
Danke für deine Hilfe! Es funktioniert leider noch nicht so ganz und erstellt bisher einfach ein File names "for". Hab deinen Code genau übernommen und bin batch-technisch nicht so fit.
Bis 2017, dann hab ich Ruhe davon face-smile

Danke dir!

Gruss tob1as
Member: Biber
Biber Nov 13, 2007 at 10:11:34 (UTC)
Goto Top
Moin tob1as,

das Größer-Zeichen for dem vor ähhm vor dem for am Anfang der Zeile bitte nicht mit eingeben.
Das gehört mit zu meinem angezeigten CMD-Prompt.

Grüße
Biber
Member: Biber
Biber Nov 13, 2007 at 18:58:49 (UTC)
Goto Top
Moin tob1as,

hast Du es jetzt zum Fliegen bekommen?
Nicht dass ich dich verwirrt habe - bin sprachlich nicht so gewandt.

Diese Zeile müsstest Du in ein geöffnetes CMD-Fenster per Copy&Paste übernehmen können, um ein poc zu machen:
for /l %i in (2006,1,2007) do @for /l %j in (1,1,12) do @if %j  LEQ 9 (@echo md %i\0%j) ELSE @echo md %i\%j
[ich habe es geändert - jetzt werden nur 2006 und 2007 abgefackelt. Ist aber fürs Prinzip egal.]

Grüße
Biber
Member: tob1as
tob1as Nov 14, 2007 at 12:02:29 (UTC)
Goto Top
Hallo Biber
Sorry, hatte gestern keine Zeit mehr. Was meinst du mit "poc"? Und was muss ich ändern an dem Code, um ihn in einer Batchdatei zu verwenden?

Danke für deine grosszügige Hilfe, schätze ich sehr!

Gruss Tobias
Member: Biber
Biber Nov 14, 2007 at 17:36:43 (UTC)
Goto Top
Moin tob1as,

zu "poc": neudeutsch=proof of concept=um zu sehen, ob es funktioniert.

zu "was muss ich im Batch ändern":

Nur alle am CMD-Prompt einfachen Prozentzeichen vor den Zählvariablen verdoppeln/durch zwei Prozentzeichen ersetzen.

Am CMD-Prompt (poc, also mit @echo whatcmdever statt whatcmdever:
for /l %i in (2006,1,2007) do @for /l %j in (1,1,12) do @if %j  LEQ 9 (@echo md %i\0%j) ELSE @echo md %i\%j

Im Batch , poc:
@echo off
FOR /L %%i in (2006,1,2007) do @for /l %%j in (1,1,12) do (
    if %%j  LEQ 9 (@echo md %%i\0%%j) ELSE @echo md %%i\%%j
)

Im Batch, scharfe Version:
@echo off
FOR /L %%i in (2006,1,2017) do @for /l %%j in (1,1,12) do (
    if %%j  LEQ 9 (md %%i\0%%j) ELSE md %%i\%%j
)

Grüße
Biber
Member: tob1as
tob1as Nov 19, 2007 at 09:07:20 (UTC)
Goto Top
Ich danke dir ganz herzlich für deine kompetente Mühe und für die Zeit die du dir genommen hast um mir zu helfen, ist nicht selbstverständlich!

Danke und liebe Grüsse aus der Schweiz

Es geht jetzt perfekt face-smile