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-ID: 37670

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

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

MonsterX
MonsterX 09.08.2006 um 16:13:14 Uhr
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
meckatzermichel
meckatzermichel 09.08.2006 um 17:07:10 Uhr
Goto Top
hi denis,

nicht schlecht.

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

gruss
michel
geTuemII
geTuemII 09.08.2006 um 17:23:01 Uhr
Goto Top
Treesize Pro findest du unter http://www.jam-software.de/treesize/

HTH geTuemII
Biber
Biber 09.08.2006 um 17:43:58 Uhr
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
Biber
Biber 09.08.2006 um 20:09:07 Uhr
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
meckatzermichel
meckatzermichel 10.08.2006 um 11:31:01 Uhr
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 ?
Biber
Biber 10.08.2006 um 13:12:59 Uhr
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]
meckatzermichel
meckatzermichel 11.08.2006 um 13:20:31 Uhr
Goto Top
danke biber.
echt genial....
muss dir doch mal ein bier schicken...face-wink
gruss
michel
Biber
Biber 11.08.2006 um 13:53:48 Uhr
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.