snax123
Goto Top

Batch: Ordnerstruktur mit Hilfe einer .txt erstellen

Hallo,

Ich versuche grad eine Batch Programm zu schreiben, das eine CSV/TXT Datei liest und dann dazu passend Ordner erstellt. Leider hab ich noch nie mit Batch gearbeitet und hab so meine Probleme damit.

Die Datei sieht etwa so aus:

Ordner1;Ordner12;Ordner13;Ordner14;
Ordner2;Ordner22;Ordner23;Ordner24;
Ordner3;Ordner32;Ordner33;Ordner34;
usw.

Die Ordnernamen können auch Leerzeichen enthalten.

Das Programm soll mir folgende Struktur anlegen:
Ordner1
->Ordner12
-->Ordner13
--->Ordner14
Ordner2
->Ordner22
-->Ordner23
usw.


So schaut mein Programm bis jetzt aus:


@echo off
FOR /F "tokens=* delims=;" %%i in (Ordner.txt) do call :loop %%i
:loop
mkdir %1
cd %1
mkdir %2
cd %2
mkdir %3
cd %3
mkdir %4
pause


Ergebniss:
Ordner1
->Ordner12
-->Ordner13
--->Ordner14


Liest also nur die erste Zeile aus. Wie krieg ich es dazu alle Zeilen auszulesen, wenn ich nicht weiß wieviele es sind?

Danke!

Content-Key: 264235

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

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

Member: rubberman
rubberman Feb 22, 2015 at 23:46:32 (UTC)
Goto Top
Hallo snax123, willkommen im Forum.

MD alias MKDIR ist durchaus in der Lage ganze Ordnerstrukturen auf einmal anzulegen. Lies also einfach zeilenweise und ersetze die Semikola durch Backslashes.
Ungetestet:
@echo off &setlocal
for /f "usebackq delims=" %%i in ("Ordner.txt") do (  
  set "line=%%i"  
  setlocal EnableDelayedExpansion
  mkdir "!line:;=\!"  
  endlocal
)
Grüße
rubberman
Member: snax123
snax123 Feb 23, 2015 at 05:54:59 (UTC)
Goto Top
Hallo!

Danke für die Antwort. Die .txt Datei zum testen hab ich etwas vereinfacht. Die Reihenfolge der Ordner und der Anordnung in der .txt Datei kann unterschiedlich sein. Könnte z.B. so aussehen:

Ordner1;Ordner14;Ordner12;Kein Ordner Anlegen;Ordner13;
Ordner2;Ordner24;Ordner22;Kein Ordner Anlegen;Ordner23;
Ordner3;Ordner34;Ordner32;Kein Ordner Anlegen;Ordner33;

Im moment ändere ich eine die Tokenauswahl "x%", z.b.

mkdir %1
cd %1
mkdir %3
cd %3
mkdir %5
cd %5
...

Ich weiß ob oder wie das bei deiner Methode möglich wär.
Member: Endoro
Endoro Feb 23, 2015 at 07:46:08 (UTC)
Goto Top
Hey,
da steht doch sicher nicht überall "Kein Ordner Anlegen" in der csv, oder? Und ist es immer die 4. Spalte mit dem "Nicht-Ordner-Text"? Wie kann die Batch feststellen, ob ein Feldwert Teil vom Ordnernamen ist oder nicht? Bitte realistische Beispieldaten liefern, Platzhalter reichen nicht.
Gruß, Endoro
Member: rubberman
rubberman Feb 23, 2015 at 07:56:49 (UTC)
Goto Top
Hallo snax123.

Ordner1;Ordner14;Ordner12;Kein Ordner Anlegen;Ordner13;
Also Tokens 1,2,3 und 5?
@echo off &setlocal
for /f "usebackq tokens=1,2,3,5 delims=;" %%i in ("Ordner.txt") do (  
  set "line=%%i\%%j\%%k\%%l"  
  setlocal EnableDelayedExpansion
  mkdir "!line!"  
  endlocal
)
Grüße
rubberman
Member: snax123
snax123 Feb 24, 2015 at 09:08:39 (UTC)
Goto Top
Danke für die Antorten, hat mir sehr weitergeholfen.