Verzeichnisse per Schleife anlegen

dinoldo

Cadet 4th Year
Registriert
Juni 2017
Beiträge
104
Hallo Leute,

ich habe im Verzeichnis "D:\Daten\Projekte\2018\Glashaus München\BT"
die Unterverzeichnissen "00", "01" und "DA". Jetzt möchte ich per CMD folgende Verzeichnisse generieren: SL, EW, EM

Ich habe es wie folgt gelöst:

Code:
@echo off
chcp 1252
color 9f

SET Pfad_01=D:\Daten\Projekte\2018\Glashaus München\BT

SET Etage_01=00
SET Etage_02=01
SET Etage_03=DA

SET Folder_01=SL
SET Folder_02=EW
SET Folder_03=EM

REM Etage 01
md "%Pfad_01%\%Etage_01%\%Folder_01%"
md "%Pfad_01%\%Etage_01%\PLT\%Folder_01%"
md "%Pfad_01%\%Etage_01%\BAK\%Folder_01%"
md "%Pfad_01%\%Etage_01%\BAK\PLT\%Folder_01%"

md "%Pfad_01%\%Etage_01%\%Folder_02%"
md "%Pfad_01%\%Etage_01%\PLT\%Folder_02%"
md "%Pfad_01%\%Etage_01%\BAK\%Folder_02%"
md "%Pfad_01%\%Etage_01%\BAK\PLT\%Folder_02%"

md "%Pfad_01%\%Etage_01%\%Folder_03%"
md "%Pfad_01%\%Etage_01%\PLT\%Folder_03%"
md "%Pfad_01%\%Etage_01%\BAK\%Folder_03%"
md "%Pfad_01%\%Etage_01%\BAK\PLT\%Folder_03%"

REM Etage 02
md "%Pfad_01%\%Etage_02%\%Folder_01%"
md "%Pfad_01%\%Etage_02%\PLT\%Folder_01%"
md "%Pfad_01%\%Etage_02%\BAK\%Folder_01%"
md "%Pfad_01%\%Etage_02%\BAK\PLT\%Folder_01%"
                      
md "%Pfad_01%\%Etage_02%\%Folder_02%"
md "%Pfad_01%\%Etage_02%\PLT\%Folder_02%"
md "%Pfad_01%\%Etage_02%\BAK\%Folder_02%"
md "%Pfad_01%\%Etage_02%\BAK\PLT\%Folder_02%"
                      
md "%Pfad_01%\%Etage_02%\%Folder_03%"
md "%Pfad_01%\%Etage_02%\PLT\%Folder_03%"
md "%Pfad_01%\%Etage_02%\BAK\%Folder_03%"
md "%Pfad_01%\%Etage_02%\BAK\PLT\%Folder_03%"

REM Etage 03
md "%Pfad_01%\%Etage_03%\%Folder_01%"
md "%Pfad_01%\%Etage_03%\PLT\%Folder_01%"
md "%Pfad_01%\%Etage_03%\BAK\%Folder_01%"
md "%Pfad_01%\%Etage_03%\BAK\PLT\%Folder_01%"
                      
md "%Pfad_01%\%Etage_03%\%Folder_02%"
md "%Pfad_01%\%Etage_03%\PLT\%Folder_02%"
md "%Pfad_01%\%Etage_03%\BAK\%Folder_02%"
md "%Pfad_01%\%Etage_03%\BAK\PLT\%Folder_02%"
                      
md "%Pfad_01%\%Etage_03%\%Folder_03%"
md "%Pfad_01%\%Etage_03%\PLT\%Folder_03%"
md "%Pfad_01%\%Etage_03%\BAK\%Folder_03%"
md "%Pfad_01%\%Etage_03%\BAK\PLT\%Folder_03%"

Da ich demnächst viel mehr Etagen (Etage_nn) und Verzeichnisse (Folder_nn) haben werden, wollte ich nachfragen, ob man die Etage und Folder mit einem Trennzeichen in zwei Zeilen fassen kann, und dann die Verzeichnisse anlegen, damit der Code nicht so lang wird?

So ungefähr:
SET Etage=00|01|DA
SET Folder=SL|EW|EM


Beste Grüße,
Dino
 
Hallo Dino,
in batch ist das verhältnismäßig aufwendig (und zudem kann ich es nicht wirklich). In Powershell ist es hingegen einfach umzusetzen:
Code:
$Pfad_01="D:\Daten\Projekte\2018\Glashaus München\BT"
$etagen=("00|01|DA").Split('|')
$folders=("SL|EW|EM").Split('|')

foreach ($etage in $etagen)
{
	foreach ($folder in $folders)
	{
		md "$Pfad_01\$Etage\$Folder"
		md "$Pfad_01\$Etage\PLT\$Folder"
		md "$Pfad_01\$Etage\BAK\$Folder"
		md "$Pfad_01\$Etage\BAK\PLT\$Folder"
	}
}
 
Zuletzt bearbeitet: (Trennzeichen auf '|' geändert)
Hallo sklaes ,

zunächst vielen Dank für das Script. Ich habe den Inhalt als als ps1-Datei gespeichert. Leider wird bei mir nicht ausgeführt. Liegt es evtl. an Leerzeichen oder Umlauten im Pfad?

Beste Grüße,
Dino
 
hallo @dinoldo,
ich habe erst jetzt gesehen, dass du hier noch eine Rückfrage zu hattest.
Den Inhalt kannst du zur Ausführung direkt in ein geöffnetes Powershell-Fenster kopieren.

Um eine Ps1 Datei auszuführen muss du mit der rechten Maustaste auf die Datei klicken und "Mit Powershell ausführen" auswählen. Zuvor musst du allerdings eine Powershell als Admin und folgenden Befehl absetzen:
Code:
Set-ExecutionPolicy RemoteSigned
 
Zurück
Oben