Dateianzahl aus Ordner ausgeben
Hallo liebe Admins,
ich habe folgendes Problem. Ich möchte aus einem Ordner aus z.B. C:\Testumgebung\temp die Anzahl der PDF Dateien in eine Variable speichern. Nun habe ich mich hier schon ein wenig umgeschaut aber keine der Themen die hätten passen können haben mit der Lösung funktioniert.
Nun hoffe ich das ihr mir dabei helfen könnt, da dies sehr wichtig ist.
LG Domme
ich habe folgendes Problem. Ich möchte aus einem Ordner aus z.B. C:\Testumgebung\temp die Anzahl der PDF Dateien in eine Variable speichern. Nun habe ich mich hier schon ein wenig umgeschaut aber keine der Themen die hätten passen können haben mit der Lösung funktioniert.
Nun hoffe ich das ihr mir dabei helfen könnt, da dies sehr wichtig ist.
LG Domme
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 99990
Url: https://administrator.de/contentid/99990
Ausgedruckt am: 24.11.2024 um 20:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo domme31!
Wenn Du an der Kommandozeile einen "dir"-Befehl eingibst, sieht die Ausgabe etwa so aus:
Interessant ist für Deinen Zweck nur die vorletzte Zeile, daher wird diese Zeile mit "findstr" unter Verwendung des Kriteriums "Datei(en)" herausgefiltert.
Der Zusatz "2^>nul" (innerhalb einer "for"-Schleife muss das Zeichen ">" maskiert werden, was zur Schreibweise "^>" führt) sorgt dafür, dass, falls keine einzige Datei gefunden wird, die Fehlermeldung ins "Nichts" (nach "nul") umgeleitet wird (und damit "verschwindet").
Wenn Du das an der Kommandozeile nachvollziehen willst, könntest Du folgende Schreibweise verwenden:
Das Ergebnis wäre dann
Da aus dieser Ausgabe nur die Anzahl benötigt wird, muss die Zeile zerlegt werden. Das Werkzeug dafür ist "for". Mittels dieses Befehles kann eine Zeile anhand von "delimiters" (Trennzeichen) in "tokens" (Einzelteile) aufgeteilt werden, welche alphabetisch ab der angegebenen Variablen (üblich ist dafür %%i, es kann aber auch ein anderer Buchstabe sein) zur Verfügung stehen ("token" Nr 1 steht daher in %%i, Nr. 2 in %%j, usw).
Da standardmäßig Leerzeichen und TAB als Trennzeichen verwendet werden, muss ein solches hier nicht explizit angegeben werden, ebenso kann, da die gesuchte Anzahl gleich als erstes Element (davor befinden sich nur Leerzeichen = Trennzeichen) in der Zeile aufscheint, auf die Angabe der "token"-Nummer verzichtet werden. Vollständig sähe die Schreibweise für "for" so aus:
Die "for"-Schleife geht alle Zeilen (das sollte in diesem Fall nur eine einzige sein) des in der Klammer angeführten Ausdruckes einzeln durch, zerlegt diese und stellt das erste Element als "%%i" zur Verfügung.
Dieser Teil der Zeile wird dann einfach der Variablen %Anzahl% zugewiesen.
Sollte keine Datei gefunden worden sein, ist in der "for"-Schleife auch keine Ergebniszeile zu verarbeiten und der Wert von %Anzahl% wird nicht neu gesetzt - es bleibt also beim in der vorhergehenden Batchzeile festgelegten Wert von 0.
Grüße
bastla
P.S.: Wenn Du Dich genauer über einzelne Befehle informieren willst, einfach an der Kommandozeile "help Befehl" oder "Befehl /?", also etwa "for /?", eingeben ...
Wenn Du an der Kommandozeile einen "dir"-Befehl eingibst, sieht die Ausgabe etwa so aus:
C:\>dir C:\Testumgebung\Temp
Datenträger in Laufwerk C: ist SysDisk
Volumeseriennummer: 1234-5678
Verzeichnis von C:\Testumgebung\Temp
14.10.2008 23:20 2.413 Test016.pdf
14.10.2008 23:20 3.067 Test015.pdf
14.10.2008 23:20 2.355 Test014.pdf
14.10.2008 23:20 3.385 Test013.pdf
14.10.2008 23:12 4.003 Test017.pdf
14.10.2008 23:12 3.641 Test011.pdf
14.10.2008 23:12 1.739 Test010.pdf
14.10.2008 23:12 2.853 Test009.pdf
8 Datei(en) 23.456 Bytes
0 Verzeichnis(se), 8.873.512.960 Bytes frei
Der Zusatz "2^>nul" (innerhalb einer "for"-Schleife muss das Zeichen ">" maskiert werden, was zur Schreibweise "^>" führt) sorgt dafür, dass, falls keine einzige Datei gefunden wird, die Fehlermeldung ins "Nichts" (nach "nul") umgeleitet wird (und damit "verschwindet").
Wenn Du das an der Kommandozeile nachvollziehen willst, könntest Du folgende Schreibweise verwenden:
dir C:\Testumgebung\Temp\*.pdf 2>nul|findstr "Datei(en)"
8 Datei(en) 23.456 Bytes
Da standardmäßig Leerzeichen und TAB als Trennzeichen verwendet werden, muss ein solches hier nicht explizit angegeben werden, ebenso kann, da die gesuchte Anzahl gleich als erstes Element (davor befinden sich nur Leerzeichen = Trennzeichen) in der Zeile aufscheint, auf die Angabe der "token"-Nummer verzichtet werden. Vollständig sähe die Schreibweise für "for" so aus:
for /f "tokens=1 delims= " %%i in (...
Dieser Teil der Zeile wird dann einfach der Variablen %Anzahl% zugewiesen.
Sollte keine Datei gefunden worden sein, ist in der "for"-Schleife auch keine Ergebniszeile zu verarbeiten und der Wert von %Anzahl% wird nicht neu gesetzt - es bleibt also beim in der vorhergehenden Batchzeile festgelegten Wert von 0.
Grüße
bastla
P.S.: Wenn Du Dich genauer über einzelne Befehle informieren willst, einfach an der Kommandozeile "help Befehl" oder "Befehl /?", also etwa "for /?", eingeben ...