Batch Datei für Ordner Struktur

MaiJen84

Cadet 3rd Year
Registriert
Dez. 2014
Beiträge
61
Hallo zusammen,

ich weiss nicht ob ich in diesem Bereich richtig bin aber ich stelle mal meine Frage.

Ich habe einen Ordner der heisst Kunde
Untern diesem sind ca. 300 eigene Ordner mit Kundennamen.

Kann ich in diese eine Ordnerstruktur erstellen lassen mit leeren Ordnern ?
01 Angebote
02 Aufträge
etc.

Evtl. sind in einigen Ordnern diese Ordner schon vorhanden. (diese sollen)
bleiben und die anderen dann nicht erstellt werden.

Geht das ?

Gruss Jens
 
So etwas? Vorher in einen neuen Ordner testen!

Code:
@echo off
set kundenordner="K:\Kunden"

for /f "delims=" %%f in ('dir /a:d /b %kundenordner%') do (
    if not exist "%%f/01 Angebote" mkdir "%%f/01 Angebote"
    if not exist "%%f/02 Aufträge" mkdir "%%f/02 Aufträge"
)
 
Danke ich probiere es gleich mal aus.
Die Ordner bei denen ich das machen möchte schiebe ich dann auf die *.bat Datei
oder ?

Gruss Jens
Ergänzung ()

Hallo,

der Befehl funktioniert leider nicht...

Gruss Jens
 
Nein du musst die zweite Zeile anpassen und dort den Kundenordner angeben. Dann fuehrst du sie einfach aus.
 
Hallo,

das geht allerdings schreibt er bei Aufträge nicht das ä sondern
den Buchstaben hier õ

Kann ich das noch ändern ?

Gruss Jens
 
Welchen Editor benutzt du? Man muss es mit DOS Encoding abspeichern. Bei Notepad++ einfach auf Sprachen > M > MS-DOS-Stil und abspeichern.
 
Hallo,

das hat jetzt funktioniert vielen Dank dafür.
Könnte man jetzt noch in den erstellten Ordnern z.B. bei einem auch noch eine weitere Struktur einfügen und
das dann auch für alle ?

Gruss Jens
 
Einfach weitere mkdir Befehle hinzufuegen
 
Sollte doch auch unter windows möglich sein, ein Array für die Ordnernamen zu verwenden, in etwa wie folgendes Beispiel (achtung, bash):

Code:
NAME=("01 Angebote" "02 Aufträge" "...")
#folgendes innerhalb der Schleife für die übergeordneten Verzeichnisse ausführen
for ((i = 0; i < ${#NAME[@]}; i++)); do 
   [[ ! -d ${KUNDE}/${NAME[$i]} ]] && mkdir "${KUNDE}/${NAME[$i]}";
 done

spart das ewige copy+paste (wenn ein Windows-Guru das mal in M$-Syntax übersetzt). Müßte auch unter Windows möglich sein.

MaiJen84 schrieb:
Könnte man jetzt noch in den erstellten Ordnern z.B. bei einem auch noch eine weitere Struktur einfügen und das dann auch für alle ?

Hierzu kann man innerhalb der Schleife noch mal eine Variablenprüfung machen.
Code:
NAME=("01 Angebote" "02 Aufträge" "...") ##Hauptstruktur
NAME2=("01 aktuelles" "02 vergangenes" "03 fiktives") ##Unterverzeichnisse zu "01 Angebote"
#folgendes innerhalb der Schleife für die übergeordneten Verzeichnisse ausführen
for ((i = 0; i < ${#NAME[@]}; i++)); do 
   [[ ! -d ${KUNDE}/${NAME[$i]} ]] && mkdir "${KUNDE}/${NAME[$i]}";
   if ( ${NAME[$i]} == "01 Angebote" ); then
      for ((k = 0; k < ${#NAME2[@]}; k++)); do 
         [[ ! -d ${KUNDE}/${NAME[$i]}/${NAME2[$k]} ]] && mkdir "${KUNDE}/${NAME[$i]}/${NAME2[$k]}";
      done
   fi
done

Das kannst Du natürlich beliebig schachteln.

Noch eleganter, wenn Du mehrere Unterordner mit einer gleichen Unterstruktur erstellen willst, überprüfst Du das aktuelle Element wieder mit einem Array:

Code:
NAME=("01 Angebote" "02 Aufträge" "03 Rechnungen" "04 Nachträge" "...") ##Hauptstruktur
NAME2=("01 aktuelles" "02 vergangenes" "03 fiktives") ##Unterverzeichnisse
UNTERORDNER=("01" "03") ##Ordner mit Substruktur, sollte keine Leerzeichen enthalten, sonst muß man Element für Element abgehen
#folgendes innerhalb der Schleife für die übergeordneten Verzeichnisse ausführen
for ((i = 0; i < ${#NAME[@]}; i++)); do 
   [[ ! -d ${KUNDE}/${NAME[$i]} ]] && mkdir "${KUNDE}/${NAME[$i]}";
   if [[ "${UNTERORDNER
[*]}" =~ "${NAME[$i]}" ]]; then
      for ((k = 0; k < ${#NAME2[@]}; k++)); do 
         [[ ! -d ${KUNDE}/${NAME[$i]}/${NAME2[$k]} ]] && mkdir "${KUNDE}/${NAME[$i]}/${NAME2[$k]}";
      done
   fi
done

Muß Dir nur noch jemand nach Batch übersetzen, der von Batch mehr Ahnung hat als ich.
 
Zuletzt bearbeitet:
Zurück
Oben