Linuxx 10 Geschrieben 24. November 2004 Melden Teilen Geschrieben 24. November 2004 Guten Tag, ja ich bin mal wieder mit den Skripts hier gelandet und habe eine sehr lange Suche hinter mir. Ich möchte für meine AD ein Skript haben das die Profile durch sucht und mir die Leeren Verzeichnisse löscht. Es besteht jedoch schon eine Struktur mit Inhalten. +%Username% |-Eigene Dateien |-Vorlage 4 | |-*.* | |-Planungen Nun sind die Ordner nun nicht leer und mit rmdir geht es daher nicht. Also müsste ich die Dateien rekursiv durchsuchen und dann von hinten her löschen, wenn nötig. Dafür brauche ich Eure Hilfe. Ich hoffe mir kann jemand helfen, dass ich die Dinger durchsucht bekomme und ein Ergebnis kommt ob das Stammverzeichnis leer ist. Die Ausnahmedateien und so sind nicht das Problem nur fehlt mir der Einstieg. Wer einen guten Link sieht, der eine unendlichgroße Schleife inne hält mag mir den auch senden, denn es muss absolut rekursiv sein. Freundlich grüßend Linuxx Zitieren Link zu diesem Kommentar
kobalt 10 Geschrieben 24. November 2004 Melden Teilen Geschrieben 24. November 2004 Hallo Linux, schau mal hier: http://www.computerbild.de/t6/pdf/pdf22_99/b2299996.pdf Das ist ein recht brauchbares Tutorial für Dateioperationen. Damit kannst Du Dir ein entsprechendes Skript basteln. Gruß kobalt Zitieren Link zu diesem Kommentar
Linuxx 10 Geschrieben 25. November 2004 Autor Melden Teilen Geschrieben 25. November 2004 Nein das hilft mir rein garnicht. Ich möchte per Skript in Verzeichnis durchschauen lassen. Das Ergebnis soll sein. Es sind Dateien enthalten = True/False Es sind Unterordner enthalten = True/False (maybe Intger) Mehr brauche ich nicht den Rest habe ich schon gemacht bzw. weiß wie ich den gestalten muss. :) Zitieren Link zu diesem Kommentar
kobalt 10 Geschrieben 25. November 2004 Melden Teilen Geschrieben 25. November 2004 Hallo Linuxx, wieso hilft Dir das nicht? Da ist doch sogar schon eine Funktion für die Suche nach Dateien innerhalb eines Ordners dabei: 'Prüfe ob ein Ordner leer ist Function FolderEmpty (name) Dim fo, fs, f Dim i, flag Set fs = CreateObject("Scripting.FileSystemObject") Set fo = fs.GetFolder(path1) Set f = fo.Files flag = true For Each i in f flag = false Next FolderEmpty = flag End Function Im Beispiel ist path1 eine Konstante, aber daraus kannst Du ja eine Variable machen. Ähnlich lässt Du Dir die Folder auflisten und rufst mit jedem gefundenen Ordner die Funktion rekursiv auf. Ist am Ende das flag immer noch TRUE (sprich der Wert der Funktion), kannst Du den Ordner löschen. Gruß kobalt Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 25. November 2004 Melden Teilen Geschrieben 25. November 2004 hallo, Function FolderEmpty (name) Dim fo, fs, f, subfolder, file Dim i, flag Set fs = CreateObject("Scripting.FileSystemObject") Set fo = fs.GetFolder(path1) flag_folder = true flag_file=true For Each file in fo.Files flag_folder = false Next For Each subfolder In fs.GetFolder(folder).SubFolders flag_file=false next End Function sorry kobalt..hab gleich bei deinem code weitergemacht hoff ich hab nix vergessen jetzt kannst dann beide flags auf true abfragen..und fertig lg dani Zitieren Link zu diesem Kommentar
kobalt 10 Geschrieben 25. November 2004 Melden Teilen Geschrieben 25. November 2004 sorry kobalt Kein Grund sich zu entschuldigen. :) Erstens ist das nicht mein Code, den hab ich wie oben bemerkt nur zitiert, und zweitens sind die Beiträge ja dazu da, um verbessert zu werden. :D Zwei Anmerkungen allerdings: a) Für die Folder nützt ein Flag nichts, man braucht einen rekursiven Aufruf der Funktion b) Neue Variablen sollte man definieren ;) Gruß kobalt Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 26. November 2004 Melden Teilen Geschrieben 26. November 2004 stimmt :) war nur ganz eilig..aber ich denke der sinn war aber erfassbar ;) ach ja..und flag_files und flag_folders hab ich vertauscht :suspect: ad a) rekursiv? warum...du schaust ja nur ob in dem folder subfolder existieren...da brauchst du keine rekursion...weiter runter willst ja nicht schaun..kannst ja auch nicht, wenn kein subfolder existiert :P diese funktion muss er so für jeden folder aufrufen -> rekursionen sollte man in "programmiersprachen" so weit wie möglich vermeiden -> stack-overfolw ;) lg Zitieren Link zu diesem Kommentar
kobalt 10 Geschrieben 26. November 2004 Melden Teilen Geschrieben 26. November 2004 Hallo, ad a) rekursiv? warum...du schaust ja nur ob in dem folder subfolder existieren...da brauchst du keine rekursion...weiter runter willst ja nicht schaun..kannst ja auch nicht, wenn kein subfolder existiert :P Doch doch, wenn ich die Aufgabenstellung richtig verstanden habe, dann könnten ja auch in den Unterordnern oder in deren Unterordner noch Dateien enthalten sein. In dem Fall dürfen die Ordner ja nicht gelöscht werden. -> rekursionen sollte man in "programmiersprachen" so weit wie möglich vermeiden -> stack-overfolw Tss tss tss. Aber nicht doch. :o Es gibt so schöne rekursive Algorithmen bei denen man sich mit der iterativen Variante die Finger bricht: - QuickSort - 8-Damen-Problem - Türme von Hanoi - ... Wenn es einen Overflow gibt merkt man das schon :D Viele Grüße, kobalt :p Zitieren Link zu diesem Kommentar
Dr.Lecter^ 10 Geschrieben 26. November 2004 Melden Teilen Geschrieben 26. November 2004 hab ich nicht so verstanden...egal..da er nicht antwortet, ist er entweder wunschlos glücklich, oder hat selbst eine lösung gefunden...auf andere gründe des "nicht-meldens" will ich nicht eingehen :D ich hab nicht gesagt, dass rekursionen immer schlecht sind....im umgang mit bäumen sind sie ja auch unverzichtbar.. ..aber einen rekursiven bubblesort musst mir mal zeigen..das erschwert wohl eher die problematik :P bist sicher, dass du dich da nicht vertan hast? :suspect: ..nur gibt es sehr viele rekursionen, die interativ besser gelöst werden können...und speichersparender ;) vgl. fakultäten usw... haha...das sollte man aber nicht merken müssen ;) lg p.s. und folder.Delete true löscht nicht rekursiv? Zitieren Link zu diesem Kommentar
Linuxx 10 Geschrieben 5. Januar 2005 Autor Melden Teilen Geschrieben 5. Januar 2005 Wieder mal hochholt! Ich wollte mich noch bedanken, die Aufgabe dich ich noch nicht erfüllt habe steht in diesem Posting ich wurde aber zeitweise in anderen Projekten eingesetzt, so das ich die Problematik nach hinten geschoben habe. Ich werde mich der Sache in den nächsten Tagen nochmal widmen und komme auf Euch dann nochmal zu ... dieses Posting ist noch lange nicht ausgestanden :) Carpe Noctem Linuxx Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.