Dateien in mehreren Ordnern zählen (verschiedene Pfade). Gesamtmenge? CMD
Hallo, ich habe vor eine Batch File zu schreiben, welche alle Dateien in einem Ordner zählt: dir "c:\dein pfad" /s
Jetzt habe ich aber mehr als 10 Ordner (in verschiedenen Pfaden), dessen Inhalt gezählt werden sollen. Ich stelle mir das jetzt so vor:
Pfad 1: 6 Dateien Pfad 2: 7 Dateien Pfad 3: 1 Datei ... ...
Jetzt will ich am Ende einfach eine Variable (%zaehler%) haben, in welcher die Anzahl aller Dateien zusammen gespeichert ist (in diesem Falle: %zaehler%=14 Dateien)
(Wenn möglich, sollten die Dateien jedoch nicht angezeigt, sondern einfach nur gezählt werden. Kann mir da jemand helfen?)
3 Antworten
@echo off
Setlocal EnableDelayedExpansion
set Counter=0
FOR /F "delims=" %%A IN ('dir /A /B /S "Pfad 1\*"') DO set /a Counter+=1
FOR /F "delims=" %%A IN ('dir /A /B /S "Pfad 2\*"') DO set /a Counter+=1
FOR /F "delims=" %%A IN ('dir /A /B /S "Pfad 3\*"') DO set /a Counter+=1
[...]
echo !Counter!
pause
exit
"Setlocal EnableDelayedExpansion" ermöglicht das Verändern von Variablen in Schleifen von einzelnen Befehlen (wie dem FOR-Befehl) und Klammern. In Klammern oder solchen Schleifen veränderte Variablen kann man mit !VARIABLE! aufrufen.
Damit hat man außerdem die Möglichkeit, eine Variable in dem Namen einer anderen zu verwenden, z.B. "!Var%Variable2%1!".
"set /a Counter+=1" rechnet zu der Variable "Counter" +1 hinzu. Man kann natürlich auch "Set /a Counter=!Counter! + 1" benutzen, aber man kann die paar Bytes sparen ;-)
Ordner makieren, Rechtsklick, Eigenschaften
Und was hat CMD jetzt dafür gemacht? Es soll ja "automatisch" gehen!
Also mit der CMD hast du dir ein Teil rausgesucht welches sau dumm ist und nix kann. Wieso versucht du es nicht mit Javascript oder so ?
Weil ich es lieber mit CMD machen möchte, Batch lerne ich momentan :)
Vielen Dank :) Jetzt habe ich nur 2 Fragen: 1. Was bewirkt "Setlocal EnableDelayedExpansion? 2. Wieso "do set /a Counter+=1? Wäre nicht "do set /a Counter=Counter+1" logischer?