Größe aller Dateien in einen Verzeichnis bestimmen
Hi,
ich möchte ein Script(.bat) schreiben, das mir dir größe aller Dateien und Verzeichnisse in einem Verzeichnis angibt.
Ich weiß aber nicht wie ich das umsetzen soll?
Ich bräuchte erstmal einen Befehl der mir dir größe jeder Datei angibt und nicht alles zusammen zählt.
Am besten wäre noch wenn die größe der Dateien in MB angegeben wird.
mfg duddits
ich möchte ein Script(.bat) schreiben, das mir dir größe aller Dateien und Verzeichnisse in einem Verzeichnis angibt.
Ich weiß aber nicht wie ich das umsetzen soll?
Ich bräuchte erstmal einen Befehl der mir dir größe jeder Datei angibt und nicht alles zusammen zählt.
Am besten wäre noch wenn die größe der Dateien in MB angegeben wird.
mfg duddits
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 21930
Url: https://administrator.de/contentid/21930
Ausgedruckt am: 21.11.2024 um 18:11 Uhr
9 Kommentare
Neuester Kommentar
So, duddits,
hatte noch anderes zu tun, aber wollte noch kurz antworten.
Wobei natürlich die Antwort einen eher spielerischen Charakter hat - ich will mit meinen Onelinern keine in C# programmierten Utilities nit 7 Parametern und 34 DLL-Aufrufen ersetzen...
Was M$ ja schon immer vergessen hat, ist ein simples CMD-Utility, mit dem ich "eben mal" auch im Batch folgende drei Fälle abfackeln kann:
-> wieviel Byte sind im Verzeichnis xy durch Dateien belegt?
-> wieviel Byte sind im Verzeichnis xy und in allen Unterzeichnissen durch Dateien belegt?
-> wieviel Byte sind im Verzeichnis xy durch Dateien vom Typ *.doc (oder 1999*.log) belegt?
M$ hatte da immer wieder mal kurz aufflackernde Ansätze (TreeSize, DirUse,..) aber nichts, was alle drei Anforderungen abdeckt.
Gerade DirUse.exe ist doch wohl albern:
(Abfrage aktuelles Verzeichnis E:\jokes)
Bitte wie soll ich so einen Output weiterverarbeiten?? Und, jetzt kommt es:
Na, klasse... dafür hat ein Redmonder Team 3 Jahre gebraucht...*seufz*
wenn ich statt dessen am CMD-Prompt eingebe:
...habe ich mehr Informationen und schneller
-und-
...das kann ich auch *gg
Nachteil: Was ich eigentlich wollte, war ja nur eine Bytezahl, nach dem Motto: wenn ich mehr als 40000000 Byte an Logdateien im Verzeichnis habe, lösch ich die ältesten oder so.
Als etwas kryptischer CMD-Oneliner sieht das so aus:
...aber den würde ich auch in mehrere Zeilen auseinanderziehen, damit er lesbar wird (aber ich will ihn ja als CMD-zeile abschicken, nicht als Batch!)
[Output wäre wieder: 7244837]
Und ich kann dieselbe Mimik in einer FOR /R..IN..DO- Anweisung dazu nutzen, alle Unterverzeichnisse zu durchsuchen... eben auch mit Gesamtgrößenangaben bezogen auf Dateitypen. Die FOR /R-Variante hatte ich schon mal gepostet (aber noch nicht wiedergefunden), eine FOR /F-Variante lass ich mal hier:
Die FOR /R-Variante reiche ich nach, sobald ich sie finde.
Und, wie geschrieben, alles nur aus for educational purposes, nicht als direktes Konkurrenzprodukt zu irgendwelchen Utility-Exedateien.
Gruß Biber
hatte noch anderes zu tun, aber wollte noch kurz antworten.
Wobei natürlich die Antwort einen eher spielerischen Charakter hat - ich will mit meinen Onelinern keine in C# programmierten Utilities nit 7 Parametern und 34 DLL-Aufrufen ersetzen...
Was M$ ja schon immer vergessen hat, ist ein simples CMD-Utility, mit dem ich "eben mal" auch im Batch folgende drei Fälle abfackeln kann:
-> wieviel Byte sind im Verzeichnis xy durch Dateien belegt?
-> wieviel Byte sind im Verzeichnis xy und in allen Unterzeichnissen durch Dateien belegt?
-> wieviel Byte sind im Verzeichnis xy durch Dateien vom Typ *.doc (oder 1999*.log) belegt?
M$ hatte da immer wieder mal kurz aufflackernde Ansätze (TreeSize, DirUse,..) aber nichts, was alle drei Anforderungen abdeckt.
Gerade DirUse.exe ist doch wohl albern:
(Abfrage aktuelles Verzeichnis E:\jokes)
>diruse .
Size (b) Files Directory
8367760 82 SUB-TOTAL: .
8367760 82 TOTAL: .
~~
>diruse *.txt
Size (b) Files Directory
Unknown Error 0 *.TXT
0 0 TOTAL: *.TXT
~~~~
wenn ich statt dessen am CMD-Prompt eingebe:
>dir e:\jokes|find "Datei(en)"
65 Datei(en) 7.244.837 Bytes
-und-
>dir e:\jokes\*.jpg|find "Datei(en)"
8 Datei(en) 986.303 Bytes
Nachteil: Was ich eigentlich wollte, war ja nur eine Bytezahl, nach dem Motto: wenn ich mehr als 40000000 Byte an Logdateien im Verzeichnis habe, lösch ich die ältesten oder so.
Als etwas kryptischer CMD-Oneliner sieht das so aus:
>>set/a "sum=0">nul & (for /f "delims=" %i in ('dir /b /a-d') do @Set/a sum+=%~zi>nul ) & echo %sum%
7244837
::---als Batch
@echo off
set/a "sum=0">nul
for /f "delims=" %%i in ('dir /b /a-d') do @Set/a sum+=%%~zi>nul
echo %sum%
:: ----
Und ich kann dieselbe Mimik in einer FOR /R..IN..DO- Anweisung dazu nutzen, alle Unterverzeichnisse zu durchsuchen... eben auch mit Gesamtgrößenangaben bezogen auf Dateitypen. Die FOR /R-Variante hatte ich schon mal gepostet (aber noch nicht wiedergefunden), eine FOR /F-Variante lass ich mal hier:
::---dirsizeMitFORF.bat
@echo off & setlocal
Set DIRCMD=
If exist %1 (
for /f "tokens=3" %%c in ('dir %1 /s ^| findstr /c:Datei^(en^) ') do set DirSize=%%c
)
if defined DirSize echo %DirSize%
::---dirsizeMitFORF.bat
Und, wie geschrieben, alles nur aus for educational purposes, nicht als direktes Konkurrenzprodukt zu irgendwelchen Utility-Exedateien.
Gruß Biber
@Biber:
Du schaffst es doch immer wieder aus einem (fast) Einzeiler ein Tuturial zu machen . Wenn ich mir das Ganze doch nur besser merken könnte .
Gibt es da einen Trick? Oder ein gutes Buch? Wohl nicht, oder hast Du schon eines geschrieben?
Gruss,
Thomas
Du schaffst es doch immer wieder aus einem (fast) Einzeiler ein Tuturial zu machen . Wenn ich mir das Ganze doch nur besser merken könnte .
Gibt es da einen Trick? Oder ein gutes Buch? Wohl nicht, oder hast Du schon eines geschrieben?
Gruss,
Thomas
@thomas
Hmm...ich nehm das mal als Kompliment... oder hieß das durch die Blume "Schwafel nicht so viel rum!" ???
Für ein Buch habe ich noch keinen Verleger gefunden, ich hätte aber bestimmt auch Schwierigkeiten, irgendein beliebiges Thema nach meinem subjektiven Gefühl tatsächlich vollständig abgehandelt zu haben.
"Erschöpfend" behandelt vielleicht... für die Leser, aber "vollständig"?? *gg
Grüße Biber
P.S. @duddits
...eine Anzeige/Umrechnung der Bytes in KByte oder MByte wäre auch kein Problem.
Hab ich mir geschenkt, weil... ein "Set /a sum /=1024" bekommst Du auch ohne mich hin, glaub ich.
Du schaffst es doch immer wieder aus einem (fast) Einzeiler ein Tuturial zu machen...
Hmm...ich nehm das mal als Kompliment... oder hieß das durch die Blume "Schwafel nicht so viel rum!" ???
Für ein Buch habe ich noch keinen Verleger gefunden, ich hätte aber bestimmt auch Schwierigkeiten, irgendein beliebiges Thema nach meinem subjektiven Gefühl tatsächlich vollständig abgehandelt zu haben.
"Erschöpfend" behandelt vielleicht... für die Leser, aber "vollständig"?? *gg
Grüße Biber
P.S. @duddits
...eine Anzeige/Umrechnung der Bytes in KByte oder MByte wäre auch kein Problem.
Hab ich mir geschenkt, weil... ein "Set /a sum /=1024" bekommst Du auch ohne mich hin, glaub ich.