
101566
27.07.2011, aktualisiert um 13:48:08 Uhr
Göße aller Dateien eines Dateityps ermitteln (BATCH)
Hallo Community,
in den letzten Tagen habe ich haufenweise Scripts, Tipps und nützliche Anleitungen hier entdeckt und war einfach begeistert.
Also hab ich mich heute dazu durch geringt mich anzumelden, da ich doch nicht alles für mich passendes finden konnte ;)
Ich war begeistert von dem Wissen und Engagement der Community.
Ich hoffe Ihr könnt mir helfen und viel Spaß:
Vorab:
Ich benutze Windows XP (falls das notwendig ist zu wissen^^)
Mein Problem/Aufgabe ist folgendes, ich möchte mit Hilfe einer BATCH-Datei die Größe aller Dateien eines Dateityps ermitteln.
Ich habe einen Ordner mit mehreren Dateien und unterschiedlichen Dateitypen. Davon möchte ich die Größe von speziell ausgewählten Dateitypen rausgefiltert bekommen und dies eventuell möglich machen für mehrere Dateitypen (z.B: doc und zip)
Ich habe schon ein bisschen rumgebastelt und bin auf folgendes gekommen:
set Quelle=c:\test\
set Typen=etx
FOR %%t in (%Typen%) do (
FOR /F "tokens=3" %%i in ('dir /-c /s %Quelle%*.etx') do set Gesamt=%%i
)
echo Groesse der Dateien: %Gesamt%
Allerdings treten folgende Fehler auf:
1. Fehler: Nach erfolgreichem Auslesen und Zusammenfassen der Dateigrößen von (z.B. doc) wird angezeigt:
0 Dir(s) und z.B: 40000000000 Bytes frei (also der freie Speicherplatz)
2. Fehler: Es werden nur die Dateigrößen des selben Dateityps zusammengefasst
3. Fehler wenn ich keine zip dateien habe und doc zuerst bei dateitypen angebe werden diese zwar ausglesen und zusammengefasst da aber *.zip nicht gefunden werden kann steht dann als
echo %Gesamt%=*Dateipfad*
Ich hoffe ihr könnt mir helfen und falls ihr noch zusätliche Informationen braucht, bzw. Fragen habt, ich bin da!
Vielen Dank,
Robert
in den letzten Tagen habe ich haufenweise Scripts, Tipps und nützliche Anleitungen hier entdeckt und war einfach begeistert.
Also hab ich mich heute dazu durch geringt mich anzumelden, da ich doch nicht alles für mich passendes finden konnte ;)
Ich war begeistert von dem Wissen und Engagement der Community.
Ich hoffe Ihr könnt mir helfen und viel Spaß:
Vorab:
Ich benutze Windows XP (falls das notwendig ist zu wissen^^)
Mein Problem/Aufgabe ist folgendes, ich möchte mit Hilfe einer BATCH-Datei die Größe aller Dateien eines Dateityps ermitteln.
Ich habe einen Ordner mit mehreren Dateien und unterschiedlichen Dateitypen. Davon möchte ich die Größe von speziell ausgewählten Dateitypen rausgefiltert bekommen und dies eventuell möglich machen für mehrere Dateitypen (z.B: doc und zip)
Ich habe schon ein bisschen rumgebastelt und bin auf folgendes gekommen:
set Quelle=c:\test\
set Typen=etx
FOR %%t in (%Typen%) do (
FOR /F "tokens=3" %%i in ('dir /-c /s %Quelle%*.etx') do set Gesamt=%%i
)
echo Groesse der Dateien: %Gesamt%
Allerdings treten folgende Fehler auf:
1. Fehler: Nach erfolgreichem Auslesen und Zusammenfassen der Dateigrößen von (z.B. doc) wird angezeigt:
0 Dir(s) und z.B: 40000000000 Bytes frei (also der freie Speicherplatz)
2. Fehler: Es werden nur die Dateigrößen des selben Dateityps zusammengefasst
3. Fehler wenn ich keine zip dateien habe und doc zuerst bei dateitypen angebe werden diese zwar ausglesen und zusammengefasst da aber *.zip nicht gefunden werden kann steht dann als
echo %Gesamt%=*Dateipfad*
Ich hoffe ihr könnt mir helfen und falls ihr noch zusätliche Informationen braucht, bzw. Fragen habt, ich bin da!
Vielen Dank,
Robert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 170514
Url: https://administrator.de/forum/goesse-aller-dateien-eines-dateityps-ermitteln-batch-170514.html
Ausgedruckt am: 22.04.2025 um 19:04 Uhr
11 Kommentare
Neuester Kommentar
Hallo Gdlii3Gmn und willkommen als Mitglied!
Versuch es etwa so:
Die Länge der Ausgabe (derzeit 12 Stellen) kannst Du variieren, indem Du den entsprechenden Wert in der Zeile 12 änderst ...
Grüße
bastla
Versuch es etwa so:
@echo off & setlocal
set "Quelle=c:\test"
set "Typen=doc zip"
set "Spaces= "
for %%t in (%Typen%) do call :ProcessType %%t
goto :eof
:ProcessType
set "Gesamt=%Spaces%0"
for /f "tokens=3" %%i in ('dir /s /-c "%Quelle%\*.%1" 2^>nul^|findstr "Datei(en)"') do set "Gesamt=%Spaces%%%i"
echo %1:%Gesamt:~-12%
goto :eof
Grüße
bastla
Aloha,
nun,
ebenso das
Da in der
Also: Zeige mir das Directory, unterdrücke Fehlermeldungen und gebe nur als Ergebnis die Zeile aus, in der
greetz André
nun,
2>nul
leitet eventuelle Fehlermeldungen ins Nichts um (unterdrückt sie), da dies in der Klammer der Schleife ausgeführt wird, muss das Zeichen >
mit ^
escaped werden,ebenso das
|
Zeichen (pipe), das dazu genutzt wird, einen folgenden Befehl mit dem vorangegangenen zusammenzufügen.Da in der
dir
-Ausgabe, die Zusammenfassung am Ende steht und hier die Information der Dateigröße in der Zeile mit Datei(en)
vorkommt, sucht man also danach mit findstr "Datei(en)"
und lässt somit nur das Ergebnis diesen Fundes (also hier die eine gewollte Zeile) ausgeben.Also: Zeige mir das Directory, unterdrücke Fehlermeldungen und gebe nur als Ergebnis die Zeile aus, in der
Datei(en)
vorkommtgreetz André
Hallo Gdlii3Gmn,
um sprachunabhängig zu werden, könntest Du auch
benutzen. Damit wird nach der Zeile gesucht, die mit
Gruß
Friemler
um sprachunabhängig zu werden, könntest Du auch
for /f "tokens=3" %%i in ('dir %Quelle%\*.%1 /s /-c 2^>nul^|findstr /i /r /c:"[0-9] Bytes$"') do set "Gesamt=%Spaces%%%i"
Bytes
(groß oder klein geschrieben) endet. Davor muss, durch ein Leerzeichen getrennt, eine Ziffer stehen.Gruß
Friemler