powerwater
Goto Top

Verzeichnisgrösse ermitteln und als Excel Datei speichern

Hallo,
Also mein Problem ist, dass ich eine batch oder Script Datei schreiben will wo mit ich aus Excel Tabelle verschiedene Links auslesen und Grösse ermitteln dann in Zelle neben speichern .

243512635dcf53a42444802623d4b5d3-excel
3161b05738ba787da5db87de239fd948-te
Vielen Dank fürs Antworten

Content-ID: 84708

Url: https://administrator.de/forum/verzeichnisgroesse-ermitteln-und-als-excel-datei-speichern-84708.html

Ausgedruckt am: 23.12.2024 um 12:12 Uhr

60730
60730 04.04.2008 um 14:36:50 Uhr
Goto Top
Hi,

wie jetzt, du hast eine Excel Tabelle und willst aus einer Batch die Daten haben?

Schau mal nach diesem wunderschönen Teilchen Namens LOG PARSER.

http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8- ...

http://www.kaczenski.de/category/publikationen/ct-magazin-fur-computert ...

Dank an Nils Kaczenski und CT
wakko
wakko 04.04.2008 um 15:02:06 Uhr
Goto Top
Hi,

ich denke, du meinst sowas für VBA:
Function fileSizeinMB(path$)
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")  
Dim dir, v
If fs.FolderExists(path) Then
   Set dir = fs.GetFolder(path)
   fileSizeinMB = dir.size / 1024 / 1024
End If
End Function
in ein Modul im vb-Editor einfügen (Excel-Mappe öffnen, alt+F11 drücken, im Projektbaum rechtsklick->Modul einfügen, Code in das Modul einfügen)
In b2 schreibst du dann
=fileSizeinMB(A2)
, sollte dir die Ordnergröße rausschmeißen.

Hoffe die Antwort paßt zu deiner Frage...

Gruß,
Henrik
Powerwater
Powerwater 04.04.2008 um 16:14:32 Uhr
Goto Top
Sory, ich war nicht deutlich,
Ich habe Aufgabe Speicherplatz zu ermitteln für verschiedene Abteilungen, Daten sind an mehreren Server verstreuet so habe ich für jede Abteilung eine Excel Tabelle mit dazugehörigen Verzeichnissen (Abteilung Ordner Struktur + Abteilungs-User Homes) aufgelistet. Jetzt mochte ich gerne diese Excel Tabelle mit einer Script oder vielleicht mit Makro verarbeiten so dass ich aktuell verbrauchten Speicherplatz bekomme.
Danke
Powerwater
Powerwater 04.04.2008 um 19:46:12 Uhr
Goto Top
Hallo Henrik,
Ja, nun dass es irgendwie nicht funktioniere, kann es daran liegen das es für Datei Grösse gedacht ist und nicht Verzeichnis Grösse.
DANKE
bastla
bastla 04.04.2008 um 20:28:43 Uhr
Goto Top
Hallo Powerwater!

wakko's Script arbeitet bei mir einwandfrei, gibt allerdings die Größe des Ordners (der Freigabe) samt aller Unterordner an ...

Falls Du nur die Dateien des angegeben Ordners berücksichtigen wolltest, müsste die Funktion etwa so aussehen:
Function TotalFileSizesInMB(path)
Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")  
Dim dir, File, Total
If fs.FolderExists(path) Then
   Set dir = fs.GetFolder(path)
   For Each File In dir.Files
        Total = Total + File.Size
   Next
   TotalFileSizesInMB = Total / 1024 / 1024
End If
End Function
Zu verwenden ist auch diese Variante auf die gleiche Weise: in ein Modul der Arbeitsmappe kopieren und in der Tabelle aufrufen mit
=TotalFileSizesInMB(A2)

Das könnte dann allerdings etwas dauern, da die Größe jeder Datei einzeln ermittelt werden muss ...

Grüße
bastla
Powerwater
Powerwater 04.04.2008 um 20:43:03 Uhr
Goto Top
Hallo bastla,
Ich mache etwas falsch, kannst Du bitte Excel File als Antwort anhangen.
DANKE
bastla
bastla 04.04.2008 um 21:00:49 Uhr
Goto Top
Hallo Powerwater!

Um die beiden Funktionen verwenden zu können, musst Du zunächst einmal über "Extras / Makro / Sicherheit" mit der Einstellung der Sicherheitsstufe "Mittel" das Ausführen von Makros erlauben. Nach einer Änderung dieser Einstellung Excel (nicht nur die Arbeitsmappe) schließen und neu starten.

Wenn Du nun Deine Mappe mit der Liste der Freigaben öffnest, kannst Du durch einen Rechtsklick auf das Blattregister ("Tabelle1" oder wie das Blatt auch heißt) und die Auswahl "Code anzeigen" den VBA-Editor starten.

Jetzt im Menü "Einfügen" den Punkt "Modul" auswählen. In das nun erscheinende große Fenster den geposteten Code der Funktion(en) einfügen.

Danach kannst Du zur Excel-Arbeitsmappe zurückkehren (Taskleiste oder erstes Symbol in der Symbolleiste bzw einfach VBA-Editor schließen) und die Funktion wie oben dargestellt in einer Zelle aufrufen.

Grüße
bastla
Powerwater
Powerwater 05.04.2008 um 19:43:14 Uhr
Goto Top
Hallo
Es, funktioniert nur teilweise, nämlich makro zählt nur Daten die in dem Verzeichnis sind, alle unterverzeichnise zählt es nicht. wie kann ich es anpassen?
DANKE
bastla
bastla 05.04.2008 um 20:24:26 Uhr
Goto Top
Hallo Powerwater!

Du kannst wakko's Version in das selbe Modul kopieren und einfach in der Tabelle die Formel
=fileSizeinMB(A2)
verwenden, um das gewünschte Ergebnis zu erhalten.

Grüße
bastla
Powerwater
Powerwater 05.04.2008 um 21:32:10 Uhr
Goto Top
Hallo bastla ,
Vielen Dank es funktioniert, habe allerdings noch ein Problem.
da ich sehr viele und sehr grosse verzeichnise habe dauert ewig bis die Tabelle bereit steht, fürs erstes mal ist es OK, danach möchte ich zusammen gestellte Daten schnell abrufen können. Gibt vielleicht eine Möglichkeit ein Button einzubauen der dann Aktion auslöst.
3161b05738ba787da5db87de239fd948-te
Ihr seit besten Vielen dank
Powerwater
bastla
bastla 07.04.2008 um 15:25:14 Uhr
Goto Top
Hallo Powerwater!

Eine relativ einfache Möglichkeit, die Berechnung nur bei Bedarf auszuführen, sähe so aus:

Füge in dem für die Functions verwendeten Modul noch folgendes Sub ein:
Sub FileSize()
Dim Zelle 
For Each Zelle In Selection.Cells
    Cells(Zelle.Row, "B").Value = fileSizeinMB(Cells(Zelle.Row, "A").Value)  
Next
End Sub

Lösche in der Tabelle alle Formeln mit dem Aufruf der Funktion, also etwa "=fileSizeinMB(A2)"; wenn Du die derzeitigen Werte behalten möchtest, kannst Du auch einfach die gesamte Spalte markieren, diese kopieren und danach "Bearbeiten / Inhalte einfügen... / Werte" wählen.

Platziere in der Tabelle eine Schaltfläche (aus der Symbolleiste "Formular"), eine AutoForm oder ein Clipart und weise dieser/diesem per Rechtsklick das Makro "FileSize" zu.

Markiere nun für jede Zeile, in der eine Neuberechnung erfolgen soll, eine Zelle (Spalte egal, es wird aus der Markierung nur die Zeile ermittelt) und starte das Makro durch Klick auf Deine Schaltfläche.

Es wird nun für jede Zeile auf Basis des in Spalte A angegebenen Pfades der Platzbedarf neu ermittelt und in Spalte B dieser Zeile eingetragen, wobei der vorherige Wert überschrieben wird.

Die Beschreibung dieser Vorgangsweise bezieht sich zwar auf Excel 2003, sollte aber auch in anderen Versionen nachvollziehbar sein.

Grüße
bastla
Powerwater
Powerwater 08.04.2008 um 14:36:08 Uhr
Goto Top
Es Funktioniert, Vielen Dank an Alle!