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

Geschrieben

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

Geschrieben

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. :)

Geschrieben

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

Geschrieben

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

Geschrieben
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

Geschrieben

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

Geschrieben

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

Geschrieben

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?

  • 1 Monat später...
Geschrieben

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

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...