Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

GELÖST

CMD per Dir Ordnergrößen ermitteln

Mitglied: 74487

74487 (Level 1)

20.07.2009, aktualisiert 08:53 Uhr, 22770 Aufrufe, 11 Kommentare

Hallo liebe Leute,

ich wollte per CMD-Skript bei Windows mit dem Befehl DIR die Unterordner eines Ordners auflisten lassen und deren Größe (von jeden Unterordner seine Größe) auflisten lassen.

Wie mach ich das am besten?


Danke im Voraus.
Mitglied: Seardan
20.07.2009 um 09:03 Uhr
Hallo,

dir /? wäre nicht schlecht

Wie sieht es mit dir /s /w (eventuell /p) aus

Andreas
Bitte warten ..
Mitglied: 74487
20.07.2009 um 09:06 Uhr
Naja da zeigt er jede Datei an. Ich hätte gerne nur die Ordner mit einer Größe dahinter.
Bitte warten ..
Mitglied: 74487
20.07.2009 um 09:28 Uhr
Hab eine Lösung:

Programm heißt TreeSize.
Bitte warten ..
Mitglied: Seardan
20.07.2009 um 09:37 Uhr
Wie sieht es mit einem Tool aus! TreeSize ist glaube ich genau das richtige: http://www.chip.de/downloads/TreeSize-Free_13001595.html

Tschau Andreas
Bitte warten ..
Mitglied: bastla
20.07.2009 um 10:03 Uhr
@Seardan
Nur als Anmerkung: Besonders übersichtliche Ergebnisse liefert noch nicht einmal die folgende Variante (von der Kommandozeile, als Batch jeweils mit doppelten %-Zeichen):
for /d %i in ("D:\Ordner\*.*") do @(for /f "delims=" %a in ('dir "%i"^|findstr "Datei(en)"') do @echo %a %i)
Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
01.08.2009 um 02:25 Uhr
da hab ich noch etwas genaueres...

die wesentlich besseren Ergebnisse jedes (Unter-)ordners in welchen diese Batch ist und ausgeführt wird - wird die komplette Größe ausgegeben. Das mit der GesamtGrößenzusammenrechnung der Einzelordner bekomme ich aber nicht ganz hin. wundert mich sowieso, das CMD mit mehr als 2Gig rechnet zumal ich Files habe die locker über 6GB gehen.

@bastla die CMD lässt sich also durch den Trick mit der IF Bedingung und der Klammer austricksen und rechnet ohne Probleme mit über 4Gig. Normal setzt die dumme Kuh CMD das ja gleich in negative Zahlen um zwischen 2 und 4 Gig und bei über 4 Gig mekerts rum....das Vieh...
vllt spielt die Variablen-Erweiterung auch noch ne zusätzliche Rolle, was ich aber net glaube.

zum Anzeigen der Größe der der Enthaltenen Unterordner eines Ordners einfach den Ordner auf die Batch ziehen...

Ordnergrößen Anzeigen bat
01.
::schnipp------Ordnergroessen Anzeigen.bat 
02.
@echo off 
03.
if "%~1"=="" (set "pfad=%~dp0" ) else set "pfad=%~1" 
04.
for /d %%i in ("%pfad%*.*") do for /f "tokens=1-3" %%a in ('dir "%%i" /a /s ^|findstr "Datei(en)"') do (set "summ=%%c" & call :zaehl "%%i" ) 
05.
for /f "tokens=2,3 delims=?=" %%i in ('set..') do echo %%i   hat: %%j bytes& set /a folders + = 1 
06.
echo %folders% Ordner & pause & goto :eof 
07.
:zaehl 
08.
if defined "..?%~1" (set /a summend + = %summ:.=%) else set "summend=%summ:.=%" 
09.
set "..?%~1=%summend%" 
10.
::schnapp------Ordnergroessen Anzeigen.bat
Gruß Phil
Bitte warten ..
Mitglied: bastla
01.08.2009 um 02:50 Uhr
@PH
Kurze Anmerkung: Das Eliminieren der Tausendertrennzeichen (=Punkte) aus der Größenangabe kannst Du einsparen, wenn Du den "dir"-Schalter "/-c" verwendest ...

Das Überlisten der 32- bzw 31-Bit-Genauigkeitsgrenze für Berechnungen kann ich allerdings nicht erkennen - für mich sieht es einfach so aus, als würde nur die Gesamtgröße (die letzte Zeile mit "Datei(en)") je Unterverzeichnis gespeichert, aber nicht berechnet (ist allerdings auch schon ziemlich spät heute) ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
01.08.2009 um 04:08 Uhr
Ok danke Punkte entfernt.....
manchmal mach ich es doch noch ein bissel umständlich! mrgreen

für den test der Berechnung mit der Genauigkeitsgrenze nimmst Du in
Zeile 08 alles VOR der Klammer AUF und alles NACH der Klammer ZU einschliesslich der Klammern weg.
dann ziehst Du ein Laufwerk oder einen Ordner größer als 2 GB auf die Batch. da kommen nur Werte unterhalb 2 GB bzw MINUS 2GB raus.


01.
::schnipp------Ordnergroessen Anzeigen.bat 
02.
@echo off 
03.
if "%~1"=="" (set "pfad=%~dp0" ) else set "pfad=%~1" 
04.
for /d %%i in ("%pfad%*.*") do for /f "tokens=1-3" %%a in ('dir "%%i" /a /s /-c ^|findstr "Datei(en)"') do (set "summ=%%c" & call :zaehl "%%i" ) 
05.
for /f "tokens=2,3 delims=?=" %%i in ('set..') do echo %%i   hat: %%j bytes& set /a folders + = 1 
06.
echo %folders% Ordner& pause & goto :eof 
07.
:zaehl 
08.
if defined "..?%~1" (set /a summend + = summ) else set "summend=%summ%" 
09.
set "..?%~1=%summend%" 
10.
::schnapp------Ordnergroessen Anzeigen.bat
Gruß Phil
Bitte warten ..
Mitglied: bastla
01.08.2009 um 10:41 Uhr
@PH
Wenn Du allerdings in Zeile 8 den folgenden "else"-Zweig verwendest:
... else (set "summend=%summ%" & echo gesetzt: %summ%)
wirst Du sehen, dass immer "else" ausgeführt wird, und damit nur ein "set", aber keine Berechnung, erfolgt - Grund: "if defined" sucht ja nicht nach der Variablen
..?Unterordner
sondern nach
"..?Unterordner"
und kann diese nicht finden - daher "not defined" ...

... bzw anders rum:
01.
:zaehl 
02.
if defined ..?%~1 set ..?%~1 
03.
set "summend=%summ%" 
04.
set "..?%~1=%summend%"
zeigt, dass die Variable nur ohne Anführungszeichen gefunden wird, und auch ohne eine Berechnung jeweils die richtigen Ordnergrößen in der Zusammenfassung enthalten sind (da je Unterordner einfach die ausgelesene, vom "dir"-Befehl gelieferte Gesamtsumme, gespeichert wird).

Nixdestotrotz ist natürlich das Zwischenspeichern der Einzelergebnisse in den jeweiligen "Ordnervariablen" eine schöne Lösung (die allerdings durch ein vorangestelltes "setlocal" vielleicht noch geringfügig zu verbessern wäre).

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
02.08.2009 um 00:17 Uhr
naja da habch mich wohl zu früh gefreut. wegen zusammrechnen.
da hab ich wohl wegen der Variable net genau hingeschaut....

ich arbeite noch an einer Art vom zusammenrechnen der Einzeilgrößen mit zerlegen der Zahl. weil ich das selbst auch benötige....

also reicht das auch so
01.
::schnipp------Ordnergroessen Anzeigen.bat 
02.
@echo off & setlocal 
03.
if "%~1"=="" (set "pfad=%~dp0" ) else set "pfad=%~1" 
04.
if not "%pfad:~-1%" == "\" set "pfad=%pfad%\" 
05.
for /d %%i in ("%pfad%*.*") do for /f "tokens=1-3" %%a in ('dir "%%i" /a /s /-c ^|findstr "Datei(en)"') do set "..?%%i=%%c" 
06.
for /f "tokens=2,3 delims=?=" %%i in ('set..') do echo %%i   hat: %%j bytes& set /a folders + = 1 
07.
echo %folders% Ordner& pause & goto :eof 
08.
::schnapp------Ordnergroessen Anzeigen.bat
Bitte warten ..
Mitglied: pieh-ejdsch
06.08.2009 um 03:50 Uhr
so Jetzt hab ich mal die Berechnung der Gesamtgröße der Einzelnen Ordner zusammengefasst.
dazu musste erst der Größenwert zerlegt werden. somit lassen sich auch Werte bis in den Petabyte bzw bis zum Exabyte zussammenrechnen und darstellen.

01.
::schnipp------Ordnergroessen Anzeigen.bat 
02.
@echo off & setlocal & set Fkilo=0& title Ordnergroessen 
03.
if "%~1"=="" (set "pfad=%~dp0" ) else set "pfad=%~1" 
04.
if not "%pfad:~-1%" == "\" set "pfad=%pfad%\" 
05.
for /d %%i in ("%pfad%*.*") do for /f "tokens=1-3" %%a in ('dir "%%i" /a /s /-c ^|findstr "Datei(en)"') do set "..?%%~i=%%c" 
06.
for /f "tokens=2,3 delims=?=" %%i in ('set.. 2^>nul') do (echo %%i     hat: %%j bytes& set /a folders + = 1 &call :rechner %%j) 
07.
if defined folders (echo %folders% Ordner in "%pfad%" haben %Fpeta%%Fgiga%%Fkilo% bytes& pause & goto :eof ) else echo "%pfad%" enthaelt keine Ordner!& pause& goto :eof 
08.
:rechner 
09.
set /a gignr = 0 , petnr = 0 
10.
set alls=%1 
11.
if %alls% gtr 999999 (set giga=%alls:~ 0, -6%& set /a gignr + = 1 , kilo = 1%alls:~-6%) else (set /a kilo = %alls:~-6% , giga = 0 , peta = 0 & goto :woutgig ) 
12.
if %giga% gtr 999999 (set peta=%giga:~ 0, -6%& set /a petnr + = 1 , giga = 1%giga:~-6%) else (set /a giga = %giga:~-6% , peta = 0) 
13.
:woutgig 
14.
set Falls=%Fpeta%%Fgiga%%Fkilo% 
15.
if %Falls% gtr 999999 (set Fgiga=%Falls:~ 0, -6%& set /a Fkilo  = 1%Falls:~ -6% + kilo , gignr + = 1) else (set /a Fkilo = %Falls% + kilo , Fgiga = 0 , Fpeta = 0 ) 
16.
if %Fgiga% gtr 999999 (set Fpeta=%Fgiga:~ 0, -6%& set /a Fgiga  = 1%Fgiga:~ -6% + giga - gignr + %Fkilo:~ 0, -6% 2>nul , petnr + = 1) else (set /a Fgiga = %Fgiga% + giga - gignr + %Fkilo:~ 0, -6% 2>nul, Fpeta = 0 ) 
17.
if %Fpeta% gtr 0 set /a Fpeta = Fpeta + peta - petnr + %Fgiga:~ 0, -6% ,  
18.
set Fkilo=%Fkilo:~ -6% 
19.
if %Fgiga% == 0 (set "Fgiga=") else set Fgiga=%Fgiga:~ -6% 
20.
if %Fpeta% == 0 set "Fpeta=" 
21.
goto :eof 
22.
::schnapp------Ordnergroessen Anzeigen.bat
Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Wie kann man mit einer .CMD in einer AD die verbleibende Gültigkeit des Passwortes ermitteln
gelöst Frage von TomTomBonBatch & Shell12 Kommentare

Hallo und Moinmoin. Ich werde erst etwas ausholen um die Hintergründe etwas zu erläutern und dann, kenntlich, zur eigentlichen ...

Festplatten, SSD, Raid
Speicherverbrauch ermitteln
Frage von YannoschFestplatten, SSD, Raid8 Kommentare

Hallo zusammen, habe einen 2k8R2 hier mit einer D Part von 724 GB frei sind nurnoch knapp 70 GB ...

Router & Routing
Netzwerkbelastung ermitteln
gelöst Frage von AzubineRouter & Routing6 Kommentare

Guten Morgen, wir haben einen Kunden wo es Probleme mit der Geschwindigkeit gibt. Sobal meh wie 2 Mitarbeiter online ...

Windows Tools
Bootfähige CMD
Frage von M.MarzWindows Tools4 Kommentare

Hallo zusammen, ich würde gerne wissen, ob es ein Tool für Windows gibt um vom USB Stick beim Booten ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...