meckatzermichel
Goto Top

verzeichnisstruktur auslesen und ordnergroesse anzeigen

hallo,

ich suche ein batch, dass mir die die verzeichnissstruktur ausliest (also ähnlich befehl tree) und zu den jeweiligen ordnern die grösse (in MB) anzeigt.
das ganze sollte ab einem zu bestimmenden ordner starten und mind. 2 ebenen tief gehen.

hat hier jemand sowas schon gemacht?
geht das mit batch?

die tools die es so gibt, verlangen leider immer, dass man jeden ordner einzeln anklickt.

danke und gruss
michel

Content-Key: 37670

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

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

Member: MonsterX
MonsterX Aug 09, 2006 at 14:13:14 (UTC)
Goto Top
die tools die es so gibt, verlangen leider immer, dass man jeden ordner einzeln anklickt.

Bitte? Schau dir das mal an:

http://www.spillett.net/~dirgraph/

MFG,
Denis Hierholzer
Member: meckatzermichel
meckatzermichel Aug 09, 2006 at 15:07:10 (UTC)
Goto Top
hi denis,

nicht schlecht.

(allerdings funktioniert die directory properties funktion bei mir nicht (winxp))

gruss
michel
Member: geTuemII
geTuemII Aug 09, 2006 at 15:23:01 (UTC)
Goto Top
Treesize Pro findest du unter http://www.jam-software.de/treesize/

HTH geTuemII
Member: Biber
Biber Aug 09, 2006 at 15:43:58 (UTC)
Goto Top
...und bei einer Forumssuche nach "DirSize" findest du auch ein paar reine Batchansätze.

Und da das Thema ein sehr beliebtes Übungsfeld speziell für VB/VBS-Einsteiger ist ( so mit FileSystemObjects und Rekursion...boah eyy..).. findest Du bestimmt in Suchmaschinen auch TreeSize.vbs'se oder DirSize.vbs'se.

HTH Biber
Member: Biber
Biber Aug 09, 2006 at 18:09:07 (UTC)
Goto Top
Aber wenn es eine 7-Zeilen-Gratis-Variante als Batch sein soll:
::------snipp Dirsize.bat (Parameter1 Verzeichnisname [opt Par2: /R wie Rekursiv]
@echo off & setlocal & Set DIRCMD=
IF /i [%2]==[/R] for /R "%~1" %%a in (.) do @%0 "%%a"  
If exist "%1" (  
  for /f "tokens=3" %%c in ('dir "%~1" /-c /s ^2^>nul^| findstr /c:"Datei(en)" ') do set DirSize=%%c  
)
if defined DirSize set "Dirsize=__________%Dirsize%"  
if defined DirSize echo %DirSize:~-10%	%~f1
::------snapp Dirsize.bat
Output:
>dirsize %windir%\System32\wbem /R
__36521657      C:\WINDOWS\system32\wbem
___7122572      C:\WINDOWS\system32\wbem\AutoRecover
____196025      C:\WINDOWS\system32\wbem\Logs
_____73689      C:\WINDOWS\system32\wbem\mof
_________0      C:\WINDOWS\system32\wbem\mof\bad
_____73689      C:\WINDOWS\system32\wbem\mof\good
______2929      C:\WINDOWS\system32\wbem\Performance
__10607952      C:\WINDOWS\system32\wbem\Repository
__10607932      C:\WINDOWS\system32\wbem\Repository\FS
_________0      C:\WINDOWS\system32\wbem\snmp
_____66942      C:\WINDOWS\system32\wbem\xml
(=20:00:55  D:\temp=)
>dirsize %windir%\System32\wbem
__36521657      C:\WINDOWS\system32\wbem
(=20:00:57  D:\temp=)

HTH Biber
P.S. Anmerkung: "Verzeichnisnamen mit Leerzeichen" als Parameter müssen in Anführungszeichen.
P.P.S. Habe hier im Forum Unterstriche "_" statt Leerzeichen genommen, das Leerzeichen hier zu verzerrter Darstellung führen.
Beispiel: DirSize "%userprofile%" ...oder DirSize "c:\Dokumente und Einstellungen" /R
Member: meckatzermichel
meckatzermichel Aug 10, 2006 at 09:31:01 (UTC)
Goto Top
hi all,
@Denis
also, dirgraph ist nicht schlecht wenn ich es interaktiv nutze, aber als liste ist nicht geeignet, weil ich das ergebnis nur als bild abspeichern kann.

@geTuemII
ich kenn treesize pro, aber ich krieg kein geld für sowas.

@Biber

also vb ist gar nicht meine welt. der batch reicht mir eigentlich. vielen dank.
kannst du mir noch einen tipp geben, wie ich die tiefe der rekursion beschränken kann? also z.b. soll er nur 3 ebenen runtergehen.
bin froh dass ich dein script so einigermassen verstehen.

gruss
meckatzermichel

achja, wenn ich das /-c rauslasse damit er das tausendertrenner anzeigt, dann stimmt das ergebnis nicht mehr. hast du das schon mal gesehen ?
Member: Biber
Biber Aug 10, 2006 at 11:12:59 (UTC)
Goto Top
na, dann wird aber aber bald ein 10-Zeiler daraus...
::------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
Output:
(=13:09:32  D:\temp=)
>dirsize %windir%\System32\wbem /R 4
_____36.531.418 C:\WINDOWS\system32\wbem

(=13:09:35  D:\temp=)
>dirsize %windir%\System32\wbem /R 6
_____36.531.418 C:\WINDOWS\system32\wbem
______7.122.572 C:\WINDOWS\system32\wbem\AutoRecover
________205.786 C:\WINDOWS\system32\wbem\Logs
_________73.689 C:\WINDOWS\system32\wbem\mof
_____________ 0 C:\WINDOWS\system32\wbem\mof\bad
_________73.689 C:\WINDOWS\system32\wbem\mof\good
__________2.929 C:\WINDOWS\system32\wbem\Performance
_____10.607.952 C:\WINDOWS\system32\wbem\Repository
_____10.607.932 C:\WINDOWS\system32\wbem\Repository\FS
______________0 C:\WINDOWS\system32\wbem\snmp
_________66.942 C:\WINDOWS\system32\wbem\xml

(=13:10:16  D:\temp=)
>dirsize %windir%\System32\wbem /R 5
_____36.531.418 C:\WINDOWS\system32\wbem
______7.122.572 C:\WINDOWS\system32\wbem\AutoRecover
________205.786 C:\WINDOWS\system32\wbem\Logs
_________73.689 C:\WINDOWS\system32\wbem\mof
__________2.929 C:\WINDOWS\system32\wbem\Performance
_____10.607.952 C:\WINDOWS\system32\wbem\Repository
______________0 C:\WINDOWS\system32\wbem\snmp
_________66.942 C:\WINDOWS\system32\wbem\xml

HTH
Biber
[Edit] @meckatzermichel
Ich hatte extra die Tausender-Punkte unterdrückt, damit es am Ende bei der Anzeige einfacher ist, den Krempel mit..
If defined DirSize Set /a Dirsize=%Dirsize%/1048576
.. in MegaByte umzurechen.
[/Edit]
---
P.S. Habe hier im Forum Unterstriche "_" statt Leerzeichen genommen, da Leerzeichen hier zu verzerrter Darstellung führen.
[Edit 21.7.2007] Erweiterte, robustere Version wurde hier im Forum entwickelt. [/Edit]
Member: meckatzermichel
meckatzermichel Aug 11, 2006 at 11:20:31 (UTC)
Goto Top
danke biber.
echt genial....
muss dir doch mal ein bier schicken...face-wink
gruss
michel
Member: Biber
Biber Aug 11, 2006 at 11:53:48 (UTC)
Goto Top
muss dir doch mal ein bier schicken
Gerne!
Im Moment wäre es sogar sinnvoll, ein paar Flaschen Becks zu mir nach Bremen zu schicken...
Durch die Fussball-WM gibt es immer noch Lieferengpässe (angeblich nur in Bremen selbst).

Aber ich habe auch keine Berührungsängste mit Hefe-, Kristall- oder Weizenbier... face-wink

Danke und schönes Wochenende
Biber
P.S. Setz bitte den Beitrag auf "Gelöst", wenn keine Fragen mehr offen sind.