Verzeichnisgröße [Erledigt]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Verzeichnisgröße [Erledigt]

Beitrag von Jan »

Gibt es eine Möglichkeit auszulesen, wie viel Platz ein Verzeichnis belegt? Mit DiskSpace() bekomme ich nur das gesamte Laufwerk, und Directory() gibt mir nur die Größe von Dateien, aber nicht von Verzeichnissen zurück.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verzeichnisgröße

Beitrag von brandelh »

Direkt nicht, aber mit directory() und Größe addieren sollte es funktionieren. Falls nötig muss man noch die Unterverzeichnisse durchsuchen ;-)
Ich meine ich hätte mal sowas geschrieben ...
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Verzeichnisgröße

Beitrag von Tom »

Die (belegte) Verzeichnisgröße wird vom Betriebssystem nicht verwaltet. Entsprechende Tools - vom Windows-Explorer bis zum Total Commander - ermitteln im Bedarfsfall die Verzeichnisgröße, indem sie die Dateigrößen der Inhalte summieren. Das kann man - je nach System - sogar beobachten. Also hilft nur eine rekursive Funktion, die die Inhalte aller Unterverzeichnisse ermittelt und die Dateigrößen addiert.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Verzeichnisgröße

Beitrag von Jan »

Ich hab das jetzt anders geregelt. Das Verzeichnis wird gemapt, und dann kann ich die Größe wieder auslesen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Verzeichnisgröße [Erledigt]

Beitrag von georg »

Hallo, Jan -


könntest Du das etwas detaillierter beschreiben? Danke im voraus!
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von Tom »

Bei einem gemappten Verzeichnis funktioniert DiskSpace() (wieder), das wird's sein. :wink:
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von brandelh »

Bist du dir da sicher ?

Ich erhalte auf gemappten Laufwerken die gleiche Angabe wie beim Laufwerk direkt.
Egal ob ich im Stammverzeichnis oder irgendwo darunter mappe ... :wink:
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von brandelh »

Brauchst du das eigentlich einmalig oder aus einem Programm heraus öffters ?

Mit dem Explorer kannst du die Verzeichnisse und Dateien markieren und dann mit rechter Maustaste Eigenschaften wählen.
Nun zählt und summiert er ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von Jan »

Genau wie Tom sagt - habe ich das Verzeichnis ersteinmal gemapt, kann ich wieder alle Tools benutzen die auf Laufwerksgrößen gehen (Gesamtgröße, belegte Größe, freie Größe).

Der Ablauf ist: Mapen, auslesen, Laufwerksbuchstaben wieder löschen. Man räumt immer wieder auf, wenn man was geändert hat ;-)

Und ja, das ist eine regelmäßige Abfrage. Daher habe ich ein kleines Progrämmchen dafür geschrieben, das rekursiv alle Verzeichnisse in dem Laufwerk mapt und ausliest. Alles in Allem inkl. 'defines, Leerzeilen, Kommentaren, Ausgabe der Werte, etc. sind das 34 Zeilen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Verzeichnisgröße [Erledigt]

Beitrag von georg »

Hallo,


also, bei mir (antwortend auf Tom) gibt DiskSpace("W") den Wert zurück, den auch DiskSpace("C") liefert, wobei W: ein Verzeichnis auf C: ist, das gemappt wurde (was auch logisch ist).

Von daher fehlt mir wissensmässig was bei der Lösung, denn ich habe damit immer noch nicht die belegten Bytes (ohne rekursiv durch die Verzeichnisse zu gehen).
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von Jan »

Georg,

ganz grob läuft das bei mir so:

(aVerzeichnisse habe ich vorher mit directory() eingelesen, auch das war gemapt worden)

Code: Alles auswählen

       RunShell("/C net use Z: \\Video-Rechner\Videodaten\" + aVerzeichnisse[i][1])
       ? PadR(aVerzeichnisse[i][1], 20) + PadL(Var2Char(DiskTotal("Z:\") / 1024 / 1024 / 1024), 10) + " Gigabyte belegt, " + ;
                                          PadL(Var2Char(DiskFree("Z:\") / 1024 / 1024 / 1024), 7) + " Gigabyte frei"
       RunShell("/C net use Z: /Delete")                                                           // Laufwerkszuweisung wieder aufheben
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von brandelh »

Hallo Jan,

das ist ja ganz nett, aber die Rückgabewerte entsprechen IMMER DENEN DES KOMPLETTEN LAUFWERKS :!:
Für einzelne Verzeichnisse muss man das anders programmieren ...
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von Tom »

Ja, Hubert hat Recht - ich hab's auch gerade ausprobiert. Und übrigens ist das sogar so, wenn man für das Verzeichnis ein Kontingent gewählt hat - der freie Platz entspricht demjenigen des gesamten Laufwerks.

Außerdem würde ich solche Batchlösungen, die in die Netzwerk-Infrastruktur eingreifen, und sei es nur für ein paar Sekunden, niemals anwenden. Erstens ist nicht verlässlich, dass das immer funktioniert, außerdem kann das unabsehbare Folgen haben (Anwender sehen just in diesem Augenblick dieses "Laufwerk" speichern dort etwas, und finden ihre Daten niemals wieder), und drittens hat man keine Kontrolle über Erfolg oder Niederlage. Mal davon abgesehen, dass die Daten sowieso nicht stimmen. :wink:

Hier gibt es mehrere Anleitungen dazu, wie man die Inhalte von (Unter-)Verzeichnissen rekursiv löscht oder zusammenstellt. Die muss man nur etwas ausbauen, um die Dateigrößen zu ermitteln. Das ist verlässlicher - und auch genauer.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von Jan »

Einwand von Tom: Vollste Zustimmung. Ich würde das auch niemals in die freie Wildbahn entlassen. Aber in diesem speziellen Fall benutzen das exakt drei Personen, und die wissen, wie man damit umzugehen hat. Und natürlich habe ich mich vergewissert, das keiner der drei irgendwas auf Z: gemapt hat.

Einwand von Hubert und Tom: Kann ich so nicht nachvollziehen. Die Daten werden sauber und korrekt ausgelesen und dargestellt. Jedes Unterverzeichnis mit seinen exakten Werten.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Verzeichnisgröße [Erledigt]

Beitrag von brandelh »

Und diese 3 Unterverzeichnisse gehören zu einem gemeinsamen Laufwerk ?
Welches OS ?

Wenn es unterschiedliche Laufwerke sind, hast du natürlich verschiedene Werte, aber immer wird der Wert für das ganze Laufwerk zurückgeliefert.
Festplattengröße, freier Speicherplatz und belegter Speicherplatz sind für alle Verzeichnisse unter Windows identisch.

Aber wenn es für deine Zwecke reicht, soll es mir recht sein ;-)
Gruß
Hubert
Antworten