Necrom 10 Geschrieben 18. Februar 2004 Melden Teilen Geschrieben 18. Februar 2004 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
nitro2000de 10 Geschrieben 18. Februar 2004 Melden Teilen Geschrieben 18. Februar 2004 Hilft dir evtl das? (is aber nicht VB) dir /s /b > test (test ist ein Dateiname in den die Bildschirmanzeige umgelenkt wird) Link zu diesem Kommentar
Necrom 10 Geschrieben 18. Februar 2004 Autor Melden Teilen Geschrieben 18. Februar 2004 Nein, das gibt ja leider das Problem mit den Umlauten :( Es muss also wohl oder übel VB sein, naja, was natürlich auch sauberer ist :wink2: Link zu diesem Kommentar
günterf 45 Geschrieben 18. Februar 2004 Melden Teilen Geschrieben 18. Februar 2004 Hi! @Necrom Was hat Deine Frage mit OT zu tun? http://www.mcseboard.de/rules.php?s=#nr13 Verschiebe nach Windows - Allgemein! Link zu diesem Kommentar
gr@mlin 10 Geschrieben 18. Februar 2004 Melden Teilen Geschrieben 18. Februar 2004 hallo, da hier anscheinend nicht so viele vb-coder sind - such mal auf dieser seite http://www.freevbcode.com . gruss, gr@mlin Link zu diesem Kommentar
AndiW 10 Geschrieben 18. Februar 2004 Melden Teilen Geschrieben 18. Februar 2004 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
AndiW 10 Geschrieben 18. Februar 2004 Melden Teilen Geschrieben 18. Februar 2004 Hab den Code jetzt noch richtig formatiert sodass du ihn 1:1 in eine Textdatei kopieren und das Script testen kannst. Gruß Andi Link zu diesem Kommentar
Necrom 10 Geschrieben 19. Februar 2004 Autor Melden Teilen Geschrieben 19. Februar 2004 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
AndiW 10 Geschrieben 19. Februar 2004 Melden Teilen Geschrieben 19. Februar 2004 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
tom.stein 0 Geschrieben 14. Januar 2019 Melden Teilen Geschrieben 14. Januar 2019 Es ist schon ein altes Thema, aber man stößt immer wieder darauf. Das Problem mit den Umlauten löst ein simples "chcp 1252" am Anfang der Batchdatei. Das Microsoft das nicht standardmäßig einstellt, wird wohl an der Rückwärtskompatibilität der Kommandozeile gegenüber MS DOS liegen. Link zu diesem Kommentar
Damian 1.550 Geschrieben 14. Januar 2019 Melden Teilen Geschrieben 14. Januar 2019 Hallo tom.stein Schön das Du zu uns gefunden hast. Der Thread hier ist allerdings schon mehr als sehr gut abgehangen. Darauf hat dich das Board auch vor dem Posten hingewiesen. Bitte berücksichtige in Zukunft diese Hinweise. Dank und Gruß Damian PS: Ich hab den alten Schinken mal weggesperrt. Link zu diesem Kommentar
Empfohlene Beiträge