Jump to content

Skript: Ordner durchsuchen (WSH)


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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?

Link zu diesem Kommentar
  • 1 Monat später...

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...