karla123
Goto Top

Unterverzeichnis zählen

Hallo liebes Forum,

ich habe ein Problem und möchte Euch bitten mir zu helfen.
Benötigt wird ein Batch mit dem ich jeweils die vorhanden 2. Unterverzeichnisse (diese sind unterschiedlich benannt) zählen kann.

Als Beispiel hier ich ein Schnipsel:

for /f "delims=" %%a in ('dir /b /AD C:\TestOrdner\*.*') do set /A ordner=ordner+1
echo %ordner% Ordner

dieser funktioniert allerdings ja nur für den angegebenen Ordner. Die Unterordner haben alle einen anderen Namen. Z.B.:
C:\TestOrdner\Maier
C:\TestOrdner\Müller
C:\TestOrdner\Schulze etc.

Gibt es eine Möglichkeit die Menge der Unterordner auszugeben?

Im voraus schon einmal vielen Dank für die Hilfe


Betriebssystem: Windows 7

Content-ID: 298763

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

114757
114757 10.03.2016 aktualisiert um 16:31:00 Uhr
Goto Top
for /f "delims=:" %%a in ('dir /b /AD "C:\TestOrdner" ^| findstr /n "." 2^>nul') do set ordner=%%a  
echo %ordner% Ordner

Gruß jodel32
karla123
karla123 10.03.2016 um 16:20:11 Uhr
Goto Top
Hallo jodel32,

das ging ja schnell mit der Antwort!! Alle Achtung.
Nur habe ich mich wohl falsch ausgedrückt. Ich meine nicht die gesamten Unterverzeichnisse sondern es sollen nur die Unterverzeichnisse der 2. Ebene gezählt werden.
Ist das möglich und habe ich mich jetzt verständlich ausgedrückt??

Nochmals vielen Dank für die Antwort
114757
114757 10.03.2016 aktualisiert um 16:29:37 Uhr
Goto Top
Kein Problem nimmst du einfach das /s beim dir Befehl raus , ist oben angepasst.
karla123
karla123 10.03.2016 um 16:34:05 Uhr
Goto Top
Habe ich gemacht, jetzt zählt er leider nur wieder die 1. Ebene
114757
114757 10.03.2016 aktualisiert um 16:38:09 Uhr
Goto Top
Nö, was bedeutet bei dir 2. Ebene ?
für mich ist das bei
C:\TestOrdner\Maier
das Maier
karla123
karla123 10.03.2016 um 16:45:53 Uhr
Goto Top
Ich habe mich wohl falsch ausgedrückt. Innerhalb des Ordners C:\TestOrdner sind noch viele Unterverzeichnisse vorhanden. Also:
C:\TestOrdner\Maier\Stadt\Kreis
C:\TestOrdner\Müller\Erde\Land\Dorf
C:\TestOrdner\Schulze\Fluss\Strom usw.
die Unterordner nach der 2. Ebene sollen nicht mit gezählt werden, sondern nur die 2. Ebene also z.B. Maier, Müller usw.

Hoffe das ist jetzt verständlicher geworden?!

Lieben Gruß
114757
114757 10.03.2016 aktualisiert um 16:56:38 Uhr
Goto Top
Ja aber genau das macht das Skript ja oben bereits !
Ich hatte es ja wie gesagt entsprechend oben im Post modifiziert...

Zählt nur Maier,Müller und Schulze also alles was direkt in deinem Testordner liegt, keine Unterordner und auch sinst nichts anderes.

Funktioniert 1A, sorry der Fehler liegt bei dir.
karla123
karla123 10.03.2016 um 16:58:23 Uhr
Goto Top
Ohh ich bin so blöd!!!!
Natürlich funktioniert das Script super!! Nur ich Dussel benötige die 3. Ebene!!!!
Also Stadt, Erde, Fluss etc.

Entschuldigung!!! Würdest du das auch hinbekommen??

LG Karla
114757
Lösung 114757 10.03.2016, aktualisiert am 11.03.2016 um 09:00:04 Uhr
Goto Top
Wow, ich glaube du brauchst mal eine neue Ladung Kaffee face-smile *heiße Tasse rüberschieb*
@echo off & setlocal enabledelayedexpansion
set "folder=C:\Testordner"  
set ordner=0
REM Alle Ordner der ersten Ebene des Startordners durchlaufen
for /f "delims=" %%a in ('dir /b /AD "%folder%"') do (  
    REM Zählvariable für Unterordner auf 0 setzen
    set sub=0
    REM Zähle die Unterordner des aktuellen Ordners der ersten Ebene
    for /f "delims=:" %%b in ('dir /b /AD "%folder%\%%a" ^| findstr /n "." 2^>nul') do set sub=%%b  
    REM Addiere die Anzahl der Unterordner zu einer Variable die am Ende die Gesamtanzahl enthält
    set /a ordner+=!sub!
)
echo !ordner! Ordner
karla123
karla123 10.03.2016 um 19:29:58 Uhr
Goto Top
Lieber jodel32!!!

Das mit dem Kaffee ist eine Super Idee. Bin heute wirklich durch den Wind.

So das mit dem Batch funktioniert SUPER!!!

Genauso brauchte ich diesen.

Vielen, vielen Dank

Lieben Gruß und nochmal Sorry für meine Nachlässigkeit!!
karla123
karla123 11.03.2016 um 08:42:18 Uhr
Goto Top
Lieber jodel32,

so nun beginnt ein neuer Tag und ich denke dieser wird besser.

Könntest du mir bitte noch erklären wie der Batch funktioniert? Wo wird z.B. die 3. Ebene ausgewählt?

Vielen Dank und LG
114757
Lösung 114757 11.03.2016 aktualisiert um 09:02:04 Uhr
Goto Top
Zitat von @karla123:
Könntest du mir bitte noch erklären wie der Batch funktioniert? Wo wird z.B. die 3. Ebene ausgewählt?

Skript ist nun mit Kommentaren versehen.

Für das Zählen der Unterordner wird eine Methode mit findstr angewendet welche vor jede Zeile mit Inhalt die Zeilenzahl setzt, diese wird dann in der zweiten Schleife in die Variable sub geschrieben.
karla123
karla123 11.03.2016 um 09:33:18 Uhr
Goto Top
Lieber jodel32,

ja, ist mir jetzt viel klarer geworden.

So nun nochmal vielen Dank!

LG Karla
karla123
karla123 11.03.2016 um 10:48:02 Uhr
Goto Top
Lieber jodel32,

nun habe ich noch eine andere Frage. Ich weiß allerdings nicht ob das korrekt ist diese hier zu stellen oder einen neuen Thread aufzumachen?
Also ich Frage einfach mal.
In meinen Verzeichnissen muss immer in der 4. Ebene der Ordner "Zahl" vorhanden sein. Wie kann ich jetzt eine Ausgabe erstellen wenn der Ordner "Zahl" nicht vorhanden ist? Mir würde eine Bildschirmausgabe genügen, allerdings mit dem jeweiligen gesamten Verzeichnisnamen.
z.B.:
C:\TestOrdner\Maier\Stadt\Zahl
C:\TestOrdner\Müller\Erde\Zahl
C:\TestOrdner\Schulze\Fluss\Zahl
C:\TestOrdner\Krueger\Berg\ usw.

Das Ergebnis sollte dann als Bildschirmausgabe lauten: C:\TestOrdner\Krueger\Berg ... Ordner Zahl fehlt

Ist das Möglich einen Batch zu erstellen??

Vielen Dank im vorraus und LG
114757
Lösung 114757 11.03.2016 aktualisiert um 11:43:49 Uhr
Goto Top
Kein Problem. Zwischen Zeile 11 und 12 noch folgende Zeile zusätzlich einfügen:
'dir /b /s /AD "%folder%\%%a" | findstr /iec:"Zahl" >nul || echo Ordner 'Zahl' nicht vorhanden in "%folder%\%%a"
karla123
karla123 11.03.2016 um 11:30:15 Uhr
Goto Top
Hallo jodel32,

die Zeile gibt zwar den fehlenden Ordner aus, aber die Ausgabe zeigt nur bis zum zweiten Unterordner an?
Also TestOrdner\Krueger statt TestOrdner\Krueger\Berg. Könntest du das noch ändern?

LG
karla123
karla123 11.03.2016 um 11:41:30 Uhr
Goto Top
Gerade habe ich festgestellt das die Zeile noch einen Unterordner tiefer suchen müsste,
also in
C:\TestOrdner\Krueger\Berg\Zahl; wenn unter C:\TestOrdner\Krueger\Berg\ der Ordner Zahl nicht vorhanden ist dann die Meldung.

Ich hoffe das ist kein größerer Aufwand??

Vielen Dank und LG
114757
Lösung 114757 11.03.2016 aktualisiert um 11:54:04 Uhr
Goto Top
Sonst noch Wünsche ? Darf's noch was Sahne sein face-wink

Statt der obigen Zeile, diese:
for /f "delims=" %%c in ('dir /b /AD "%folder%\%%a"') do (  
    if not exist "%folder%\%%a\%%c\Zahl" echo In Ordner '%folder%\%%a\%%c\' ist kein Ordner 'Zahl'.  
)
jodel
karla123
karla123 11.03.2016 um 12:05:23 Uhr
Goto Top
Lieber jodel,

nein, ich benötige keine Sahne!! Statt dessen hast du ja diese wunderbaren Zeilen geschrieben!!! Und die funktionieren SUPER!!!

Und nun bist du auch von meinen Kommentaren erlöst!!

Vielen Dank nochmal für Deine Mühe und dein Verständnis!!!


Einen ganz lieben Gruß und ein schönes Wochenende wünsche ich dir!!

LG Karla
114757
114757 11.03.2016 um 12:07:01 Uhr
Goto Top
Zitat von @karla123:
Einen ganz lieben Gruß und ein schönes Wochenende wünsche ich dir!!
Ebenso face-smile