Verzeichnisanzahl

  • Hallo zusammen!

    Ich möchte gerne den freien und belegten Speicherplatz eines Netzlaufwerkes, sowie die Anzahl der vorhandenen Verzeichnisse und Dateien ermitteln.

    Mit DriveSpaceFree kann ich den freien Speicher abfragen und mit DirGetSize die anderen Werte ermitteln.
    Bisher habe ich diese Werte per DOS-Script in eine Textdatei geschrieben und dann die gesuchten Werte ausgelesen

    (DIR K:\ /S > D:\Speicher\inh_K.asc;
    /S Listet Dateien und alle Unterverzeichnisse auf ).

    Nun ist mir aufgefallen, das die Werte für die Verzeichnise unterschiedlich sind.

    Werte mit DOS
    132224 Datei(en)
    14.075.261.628 Bytes
    3536 Verzeichnis(se),
    113.416.609.792 Bytes frei

    Werte mit DirGetSizeSize
    (Bytes):14075274428
    Files:132225
    Dirs:1178

    Kann mir jemand sagen, warum die Anzahl der Verzeichnisse so unterschiedlich ist?
    Kann es sein, das DirGetSize nur die Verzeichnisse der 1.Ebene ermittelt und DOS zusätzlich Unterverzeichnisse?
    Gibt es eine Möglichkeit mit AutoIt alle Verzeichnisse und Unterverzeichnisse zu ermitteln?

    Vielen Dank schon mal für eure Hilfe!!!!!
    mfg
    s.koni

  • Hi!

    Du musst die Funktion rekursiv aufrufen.
    Kann dir nachher mal eine Funktion schreiben, die sich automatisch wieder aufruft.

    peethebee

  • Hallo peethebee,

    das wäre super, wenn du mir ein Beispiel geben könntest!
    Musste gerade nachschauen, was rekursiv ?( eingentlich bedeutet (sollte mir das peinlich sein???? :D ) Falls es jemand ähnlich geht: http://de.wikipedia.org/wiki/Rekursion

    Vielen Dank für dein Angebot mir so eine Funktion zu schreiben! Würde mich darüber echt freuen, denn so könne ich mir das mal anschauen.

    Danke
    s.koni

  • Ich hab mal im englischen forum geguckt aber da auch nix direktes gefunden. Also über DirGetSize kriegst du keine korrekte Größe. Alternativ dazu kannst du es mit FileFindFirstFile / FileFindNextFile
    FileGetSize machen dies ist aber im Umfang größer und beansprucht wahrscheinlich auch mehr zeit.
    Beste Lösung des Problemes ist wie gesagt mit Dos

    mfg Mirage

    • Offizieller Beitrag

    Hi!

    Hier eine Liste zu solchen Problemen mit Rekursion aus dem englischen Forum:

    http://www.autoitscript.com/forum/index.php?showtopic=19168&hl=recursive

    Ist leider auf Englisch, wenn es Probleme damit gibt, einfach noch mal melden.

    Wenn du eine Lösung gefunden hast, bitte hier posten, damit andere auch was davon (oder zumindest vom rekursiven Prinzip) haben.

    Danke,
    peethebee

    • Offizieller Beitrag

    Hallo!

    ich habe mal Dos nach allen meinen Ordnern auf C:\ suchen lassen. Meine Kommandozeiel war folgende:

    dir C:\ /S (und mal mit /AD)

    Aber da hat er ja ewig gekurbelt (obwohl mein C:\ nicht soo voll ist.
    Mache ich da was falsch? Sollte man sich evtl. irgendwie die Zwischenanzeige ausblenden mit einem Parameter oder dauert das bei euch auch so lange?

    peethebee

    • Offizieller Beitrag

    hi!

    hab hier mal was geschrieben, bzw ist eingentlich von einem meiner älterer scripte (http://autoit.aufwaerts.de/thread.php?threadid=89&sid=)

    komm aba nich ganz weiter

    • Offizieller Beitrag

    Hi!

    Noch mal ein Versuch von mir:

    Leider scheitert diese Variante am internen Limit der offenen Dateien in AutoIt (64).
    Ich suche weiter nach einer Löung, aber zur Not muss es wohl wirklich über DOS und die Befehle rund um "StdoutRead" gehen.

    peethebee

  • Nur zur Info:

    DirGetSize ermittelt die Anzahl real existierender Ordner (soweit möglich).

    mit Dir /s unter DOS werden ebenfalls die 'Ordner' "." und ".." mitgezählt, die ja eigentlich keine 'richtigen' Ordner darstellen.

    Das was DirGetSize ermittelt sollte im Normalfall dasselbe sein wenn Du Dir im Explorer die Eigenschaften (Unterordner/Dateien) eines Verzeichnisses anzeigen lässt.

    Ebenfalls dauert das 1.Suchen bzw. Ermitteln der Dateien/Ordner immer etwas länger - ust im Explorer genauso.
    Danach gehts normalerweise schneller - hängt auch mit der Indizierung zusammen.

    Gruß :)
    Holger

  • Hallo Holger!

    :klatschen: DAS IST ES! Das klingt logisch und kann ich auch nachvollziehen. Da habe ich wohl die ganze Zeit die falsche Anzahl Ordner ermittelt und protokolliert!

    Vielen Dank für eure Mühe und Mithilfe!

    mfg
    s.koni