duddits
Goto Top

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

Content-Key: 21930

Url: https://administrator.de/contentid/21930

Printed on: April 19, 2024 at 04:04 o'clock

Member: ketchup
ketchup Dec 19, 2005 at 11:04:18 (UTC)
Goto Top
diese tools gibts schon. müsstest nicht nochmal selbst erfinden.

du kannst zb das tools DIRUSE.EXE aus dem resourcekit benutzen.


jürgen
Member: Honksen
Honksen Dec 19, 2005 at 11:23:30 (UTC)
Goto Top
Hallo,

es geht glaub ich auch DIR SIZE VIEW.

Honk
Member: duddits
duddits Dec 19, 2005 at 11:34:11 (UTC)
Goto Top
Hi,

danke für die schnelle Hilfe, das Tool diruse.exe ist genau das wonach ich gesucht habe.
Danke.

mfg dudidts
Member: Biber
Biber Dec 19, 2005 at 11:54:10 (UTC)
Goto Top
...schade, sonst hätte ich noch ein paar DirSize.bat-Oneliner gepostet face-sad
Member: duddits
duddits Dec 19, 2005 at 12:00:00 (UTC)
Goto Top
@Biber
Hi,

das Problem ist zwar gelöst, aber da ich gerne was dazu lerne könntes du deine DirSize.bat-Oneliner posten (am besten mit einer kurzen erklärung).

mfg duddits
Member: Biber
Biber Dec 19, 2005 at 21:09:10 (UTC)
Goto Top
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)
>diruse .

    Size  (b)  Files  Directory
      8367760     82  SUB-TOTAL: .
      8367760     82  TOTAL: .
~~
Bitte wie soll ich so einen Output weiterverarbeiten?? Und, jetzt kommt es:
>diruse *.txt

    Size  (b)  Files  Directory
Unknown Error      0  *.TXT
            0      0  TOTAL: *.TXT
~~~~
Na, klasse... dafür hat ein Redmonder Team 3 Jahre gebraucht...*seufz*

wenn ich statt dessen am CMD-Prompt eingebe:
>dir e:\jokes|find "Datei(en)"  
              65 Datei(en)      7.244.837 Bytes
...habe ich mehr Informationen und schneller
-und-
>dir e:\jokes\*.jpg|find "Datei(en)"  
               8 Datei(en)        986.303 Bytes
...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:
>>set/a "sum=0">nul & (for /f "delims=" %i in ('dir /b /a-d') do @Set/a sum+=%~zi>nul ) & echo %sum%  
7244837
...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!)
::---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%
:: ----
[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:

::---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
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
Member: superboh
superboh Dec 20, 2005 at 03:13:33 (UTC)
Goto Top
@Biber:
Du schaffst es doch immer wieder aus einem (fast) Einzeiler ein Tuturial zu machen face-smile. Wenn ich mir das Ganze doch nur besser merken könnte face-sad.

Gibt es da einen Trick? Oder ein gutes Buch? Wohl nicht, oder hast Du schon eines geschrieben?

Gruss,
Thomas
Member: Biber
Biber Dec 20, 2005 at 16:28:12 (UTC)
Goto Top
@thomas
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!" ??? face-big-smile face-big-smile

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.
Member: duddits
duddits Dec 21, 2005 at 10:57:59 (UTC)
Goto Top
Hi,

noch mals danke für deine Hilfe, echt super was du da gebastelt hast. face-smile

mfg duddits