nwinter91
Goto Top

CMD Ordnergröße ermitteln

Hallo zusammen,

ich habe bei der Suche hier eine Funktion von Biber gefunden, die Rekrusiv die Ordner durchgeht und die Dateigröße des Ordner ausließt:

::------snipp Dirsize.bat (Parameter1 Verzeichnisname [opt Par2: /R wie Rekursiv] /opt. par3 =Ebenen
@echo off & setlocal & Set DIRCMD=
IF /i [%2]==[/R] for /R "%~1" %%a in (.) do @%0 "%%a" %3  
if not [%2]== Set /a "Level=%2+2"  
if defined level for /f "delims=\ tokens=1,%level%" %%i in ("%~1") do if not [%%j]== goto :eof  
If exist "%1" (     
  for /f "tokens=3" %%c in ('dir "%~1" /s ^2^>nul^| findstr /c:"Datei(en)" ') do set DirSize=%%c   
)
set "space20=____________________"  
if defined DirSize set "Dirsize=%space20%%Dirsize%"  
if defined DirSize echo %DirSize:~-15%	%~f1 
::------snapp Dirsize.bat

Ein Problem sehe ich darin, ich benötige die Dateigröße auf dem Datenträger und bin zur Zeit am überlegen wie ich die per dir Befehl auslesen kann.

Es fehlt ja eigentlich nur eine Funktion:

DirSize = Aktuelle Dateigröße der Operation
Anzahl = Dirsize/4096
Neue Dateigröße = RUNDEAUF(Anzahl)*1024

Ich hoffe ihr könnt mir helfen.

Grüße

Nina Winter
Kommentar vom Moderator Biber am Dec 11, 2009 um 15:59:41 Uhr
Verschoben von "Windows Server" nach "Batch & Shell".

Content-Key: 131399

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

Printed on: April 24, 2024 at 22:04 o'clock

Member: Biber
Biber Dec 11, 2009 at 16:18:02 (UTC)
Goto Top
Moin nwinter91,

willkommen im Forum.

Hmmja, ein bisschen dir die Handhabung der Werkzeuge zeigen kann ich jetzt schon,
aber was den eigentlichen Algorithmus, den Rechenweg angeht, da sollten wir nochmal (gemeinsam mit dem Rest des Forums) laut meditieren.

Erstmal das Handwerkliche.

Wenn wir kurz an den CMD-Prompt wechseln und ein bisschen an der zentralen Zeile 07 oben im Skript rumschrauben, dann bekommen wir ja recht schnell zwei zahlenwerte heraus statt nur einem.

Zur Demo: Ich befinde mich am CMD-Prompt in meinem Verzeichnis D:\temp und habe vorher mit
mode con Cols=155 lines=44
...ein bisschen Platz für Ein- und Ausgaben freigeschaufelt.
Außerdem hab ich beim DIR-Aufruf den Parameter [DIR ... /-c ..] mit angegeben, damit die Tausenderpunkte in den Byteangaben unterdrückt werden.
Bitte nur den Teil der Zeile nach ">" eingeben, der Rest ist mien Prompt.
(=17:09:29  D:\temp=)
>for /f "tokens=1-3" %a in ('dir "D:\temp" /-c /s ^2^>nul^| findstr /c:"Datei(en)" ') do @Set /a "DirSizeFiles+=%a,DirSizeBytes+=%c">nul  

(=17:09:35  D:\temp=)
>Set dirS
DirSizeBytes=1105190852
DirSizeFiles=3554
In der ersten Demo-Zeile setze ich zwei Variablen - da ich die später wiederfinden will,beginnen beide mit dem Präfix "DirSize...".
Deshalb kann ich die im zweiten Schritt auch stressarm abfragen mit "Set dirs"

Soweit kann ich dich also bringen - jetzt haben wir die Anzahl Dateien (allerdings ohne Anzahl leerer Ordner und 0-Byte-Dateien) und die Anzahl Bytes von Dateien mit Inhalt.

Jetzt du wieder: wie von hier an weiter?
Gefunden wurden (s.o) 3554 Dateien... Informationstransportierende Bytes in diesen Dateien sind 1.1 Mrd. Zeichen.
Wie möchstest du jetzt den Platzbedarf abschätzen?

Grüße
Biber
Member: nwinter91
nwinter91 Dec 14, 2009 at 15:54:13 (UTC)
Goto Top
Hi Biber,

sorry das ich mich erst jetzt melde.

Ich sehe das Problem fast als unlößbar an. Wir bräuchten
entweder die belegte Dateigröße in Byte (inkl. der berücksichtigten
Clustergröße) oder Mathematik:

runde(Dateigröße/4096)*1024 = belegte Dateigröße in Byte

Ich wüßte jetzt nicht, wie das mit der CMD Umgesetzt werden könnte.

Grüße

Nina