CMD Ordner in Verzeichnis zählen?
HI!
Ich will in einen Verzeichnis alle Ordner außer Unterordner zählen und in eine Variable übertragen lassen. Die Variable soll nur eine Zahl beinhalten da ich sonst nicht mit ihr rechnen kann. Mein bisheriger Code:
dir "\Pfad\wow\Frage\Geheim\Dateien*()" | find /c /i "(" >"\Pfad\i\wow\antwort\nochgeheimer\ordnercounter.txt" SET /p ordnercounter=<"\Pfad\i\wow\antwort\nochgeheimer\ordnercounter.txt" echo %ordnercounter%
Nach "(" suche ich, da die Ordner alle nach einen bestimmten Muster benannt sind:
Breaking Bad (2008)
Auf diese Art sind alle Ordner benannt, deshalb die Idee mit den "*()". Das komische ist das die Ausgabe nicht richtig ist. Anzahl von Ordnern nachgezählt im Explorer: 5 . Anzahl von Ordnern in der Ausgabe der CMD: 7 .
Jemand eine Idee wo der Fehler liegt? :)
Danke für jeden Tipp und für jede hilfreiche Antwort!
3 Antworten
![](https://images.gutefrage.net/media/user/LordWithLord/1523134699310_nmmslarge__29_21_176_176_d5cb2a3ce5399342104c426f59f97e9a.jpg?v=1523134699000)
Ich berichtige mich, der Code den ich habe ist dieser hier:
@echo off
dir "\\Pfad\wow\Frage\Geheim\Dateien\*(*)" | find /c /i "(" >"\\Pfad\i\wow\antwort\nochgeheimer\ordnercounter.txt"
SET /p ordnercounter=<"\\Pfad\i\wow\antwort\nochgeheimer\ordnercounter.txt"
echo %ordnercounter%
pause>NUL
exit
Beim ersten Pfad wurde ein "\" verschluckt und das "echo %ordnercounter%" war an der falschen Stelle
![](https://images.gutefrage.net/media/user/timlg07/1580338446187_nmmslarge__0_0_492_491_0231aa81acd4893bf9dd5eda7f51619a.jpg?v=1580338446000)
Warum nicht einfach mit for/D? Die Ordnernamen kannst du ja dann mit findstr und ner regex überprüfen:
for /D %%D in ("\Pfad\wow\Frage\Geheim\Dateien\*") do echo.%%~nxD|findstr/R "(.*)"&&set /a i+=1
cls&echo Anzahl der Ordner = %i%
pause
~Tim
![](https://images.gutefrage.net/media/user/priesterlein/1542055893934_nmmslarge__444_0_1075_1075_c1ca1c12508ee885dc0aee04c6e0cbf8.png?v=1542055894000)
Ich schätze mal, dass der . und .. mitzählt. Wie gut, dass du dir nicht die Namen ausgeben lässt.