Jump to content

Dateien und Verzeichnisse auflisten


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

Empfohlene Beiträge

Hallo

 

Ich weiss, dass ich hier nicht wirklich im richtigen Forum bin, aber auf die Experten hier ist ja meistens verlass :)

 

Ich habe ein kleines Problem: Ich muss mit VB Script von einem Verzeichnis alle Dateien und Unterverzeichnisse auflisten. Also über die Kommandozeile wäre es "dir /s /b" was ich brauche. Zur Not könnte ich das auch so in eine Textdatei schreiben und diese später in VBS auslesen, allerdings gibt es da dann Probleme mit den Umlauten. Hat jemand von euch zufällig den passenden Code zur Hand? Da VBS, naja überhaupt Programmierung, nicht zu meiner größten Stärke gehört wäre ich sehr dankbar...

 

Gruss Manuel

Link zu diesem Kommentar

Hallo Necrom,

 

da der Code für andere auch interessant sein könnte poste ich ihn mal hier.

 

Der VB Code listet alle Dateien und Verzeichnisse von C: auf.

 

Wichtig dabei ist, dass du mit dem Begriff Rekursion etwas anfangen kannst falls du den Code nicht nur benutzen sondern auch verstehen sollst.

 

Code:

 

 

Public Function akt_list_ausgabe (FolderList, Zaehler)

 

for each Folder in FolderList

if FolderList.Count > 0 then 'falls noch Unterordner existieren

wscript.echo Folder.Path 'aktueller Ordner wird ausgegeben

for each File in Folder.Files

wscript.echo file.name

next

Zaehler = Zaehler + 1

Zaehler = akt_list_ausgabe (Folder.SubFolders, Zaehler) 'Funktion wird erneut mit Unterordnern aufgerufen

 

end if

 

if FolderList.Count = 0 then

wscript.echo Folder.Path & " Count: " & FolderList.Count

 

for each File in Folder.Files

wscript.echo file.name

next

Zaehler = Zaehler + 1

end if

next

 

akt_list_ausgabe = Zaehler 'Summe der Ordner wird an die jeweilige Instanz der Funktion zurückübergeben

End Function

 

 

Dim filesys 'Filesystemobjekt

Dim Drive 'Laufwerk

Dim FolderList 'Ordnerliste von Rootfolder

Dim Zaehler

 

set filesys = CreateObject ("Scripting.FileSystemObject")

set Drive = filesys.GetDrive("C")

set FolderList = Drive.RootFolder.SubFolders

 

Zaehler = 0 'Zähler wird initialisiert

 

Zaehler = akt_list_ausgabe (FolderList, Zaehler)

 

wscript.echo vbNewLine & vbNewLine & "AUSGABE ABGESCHLOSSEN" & vbNewLine & "Ordneranzahl: " & Zaehler

 

Falls in der Formatierung hier im Beitrag noch Fehler sind musst du in der Textdatei nachhelfen, aber grundsätzlich funktioniert der Code recht gut. Die Variable Zaehler zählt die Ordner und ist sonst nicht weiter so wichtig.

 

Hoffe ich konnte helfen. :)

 

Gruß

Andi

Link zu diesem Kommentar

Hallo AndiW

 

Danke schonmal für den Code. Ist ja aufwendiger als ich erwartet hätte.

Ich habe jetzt nur noch ein Problem: Ich möchte mit der Liste nicht im Rootverzeichnis anfangen, sondern z.B. im Verzeichnis "C:\Test".

 

Wie muss ich diesen Code (set FolderList = Drive.RootFolder.SubFolders) abändern, damit das klappt?

 

Vielen Dank schonmal im voraus.

 

Gruss Manuel

 

PS: Gibt es irgendwo eine Referenz, wo alle vordefinierten Objekte, wie z.B. "RootFolder" aufgelistet sind?

Link zu diesem Kommentar

Hallo Manuel,

 

Wenn du mit einem Verzeichnis starten willst ersetzt du den Hauptteil des Programmes folgendermaßen

 

Code:

Dim filesys 'Filesystemobjekt

Dim FolderList 'Ordnerliste

Dim Zaehler

 

set filesys = CreateObject ("Scripting.FileSystemObject")

set hFolder= filesys.GetFolder("C:\Test")

set FolderList = hFolder.SubFolders

 

Zaehler = 0 'Zähler wird initialisiert

 

for each File in hFolder.Files 'Dateien im Startverzeichnis werden ausgegeben

wscript.echo file.name

next

 

Zaehler = akt_list_ausgabe (FolderList, Zaehler)

 

wscript.echo vbNewLine & vbNewLine & "AUSGABE ABGESCHLOSSEN" & vbNewLine & "Ordneranzahl: " & Zaehler

 

Die zusätzliche For Schleife vor dem Aufruf der Funktion dient dazu, dass die Dateien im Startverzeichnis aufgelistet werden, das wird in der Unterfunktion nicht berücksichtigt. Die Funktion akt_list_ausgabe bleibt unverändert.

 

Schick mir über PN deine Mail, ich schick dir eine Referenz.

 

Gruß

Andi

Link zu diesem Kommentar
  • 14 Jahre später...
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!
Gast
Dieses Thema wurde für weitere Antworten geschlossen.
×
×
  • Neu erstellen...