Alles zum Thema Windows Clients für den Desktop: Windows 95 / 98 / NT / 2000 / XP / Vista / Win 7 — Q & A zu den Windows Client Versionen sowie Windows Media Center / Windows Home Server
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...
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
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.
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?
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.