Dateisuchen

  • VBScript

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ZdeathZ.

    Hallo,

    aus beruflichen Gründen beschäftige ich mich gegenwärtig mit Vbscript. Daher unternehme ich meine ersten Gehversuche mit dieser Skript-Sprache. 8-) Zum Einstieg habe ich diesbezüglich ein wenig im Internet recherchiert und habe ein paar Tutorials bearbeitet. Nun habe ich mir zur Aufgabe gesetzt, ein Skript zu erstellen, welches alle (PST-Datein) unter dem Laufwerk C:\ sucht. Im ersten Schritt, will ich erst einmal alle PST-Datein finden, die sich im Wurzelverzeichnis (C:\) befinden. Unerfreulicherweise funktioniert es noch nicht :(

    Visual Basic-Quellcode

    1. dim Dateisystem, Verzeichnis, Datei, Verzeichnispfad, dateierweiterung
    2. Sub durchsuchen (verzeichnispfad, dateierweiterung) ' Prozedur zum Suchen der Datei
    3. Dim Dateisystem, Verzeichnis, Datei ' Festlegen der variablen
    4. Set Dateisystem = CreateObject("Scripting.FileSystemObject") ' Erzeugen eines Objektes
    5. Set Verzeichnis = Dateisystem.GetFolder(verzeichnispfad) ' Der Variable Verzeichnis das FileSystem-Objekt zuweisen
    6. For Each Datei In Verzeichnis
    7. If InStr(UCase(Dateisystem.GetExtensionName(verzeichnis))) = dateierweiterung Then 'Überprüfung, wenn ExtensionName (dateierweiterung) = der gesuchten Dateierweiterung ist
    8. MsgBox "Datei gefunden"
    9. End If
    10. Next
    11. End Sub
    12. Suchpfad = "C:"
    13. Dateityp = "pst"
    14. Suchergebnis = durchsuchen(Suchpfad, Dateityp)
    15. WScript.Echo "mal gucken" + Suchergebnis

    ZdeathZ schrieb:

    Sub durchsuchen

    ZdeathZ schrieb:

    Suchergebnis = durchsuchen(Suchpfad, Dateityp)

    Eine "Sub" liefert kein "Ergebnis" (anders als ne FUNCTION). Also weist du deinem Ergebnis ein großes "nichts" zu

    Visual Basic-Quellcode

    1. UCase(Dateisystem.GetExtensionName(verzeichnis))) = dateierweiterung

    Und das kann auch nicht gehen, wenn "dateierweiterung" "pst" ist. Denn du wandelst ja VOR dem Vergleich nach GROSSschreibung um (UCase). Wenn schon, dann musst du beides in denselben case wandeln (U oder L)
    Hallo picoflop,

    vielen Dank für die schnelle Hilfe :)
    Ich habe soweit deine Lösungsvorschläge eingearbeitet und das Skript noch einmal etwas modifiziert. Jetzt bringt wenigstens keine Fehlermeldung mehr. Aber die gespeicherte Datei unter C:\ findet er trotz alledem nicht.

    Visual Basic-Quellcode

    1. dim Dateisystem, Verzeichnis, Datei, Verzeichnispfad, dateierweiterung
    2. Function durchsuchen (verzeichnispfad, dateierweiterung) ' Prozedur zum Suchen der Datei
    3. Dim Dateisystem, Verzeichnis, Datei ' Festlegen der variablen
    4. Set Dateisystem = CreateObject("Scripting.FileSystemObject") ' Erzeugen eines Objektes
    5. Set Verzeichnis = Dateisystem.GetFolder(verzeichnispfad) ' Der Variable Verzeichnis das FileSystem-Objekt zuweisen
    6. For Each Datei In Verzeichnis.Files
    7. If LCase(Dateisystem.GetExtensionName(verzeichnis)) = LCase(dateierweiterung) Then 'Überprüfung, wenn ExtensionName (dateierweiterung) = der gesuchten Dateierweiterung ist
    8. MsgBox "Datei gefunden"
    9. End If
    10. Next
    11. End Function
    12. Suchpfad = "C:"
    13. Dateityp = "pst"
    14. Suchergebnis = durchsuchen(Suchpfad, Dateityp)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ZdeathZ“ ()

    petaod schrieb:

    Funktioniert's mit

    Visual Basic-Quellcode

    1. Dateityp = ".pst"
    ?


    funktioniert leider auch nicht.

    Wie ich bereits erwähnte, beschäftige ich micht erst seit ein paar Tagen mit Vbscript. Ist das Vorgehen in meinem Skript erst einmal richtig oder gibt es einen eleganteren Weg, welcher das Suchen von Dateien ermöglicht ?

    @ picoflop

    Visual Basic-Quellcode

    1. Function durchsuchen (verzeichnispfad, dateierweiterung)

    Hier lege ich doch die Funktion an, oder ? Dabei wird doch der Verzeichnispfad und die Dateierweiterung mit übergeben.

    Visual Basic-Quellcode

    1. Suchpfad = "C:\"
    2. Dateityp = ".pst"
    3. Suchergebnis = durchsuchen(Suchpfad, Dateityp)
    Hallo,

    ich will nun das Skript dahingegen ergänzen, das die Möglichkeit besteht, auch alle Unterverzeichnisse zu durchsuchen. Es treten hierbei zwei Probleme auf: zunächst bringt er bei gewissen Ordnern "Erlaubnis verweigert". Etwaige Erklärung meinerseits wäre, dass auf diesen Ordner keinen Zugriff habe. Könnte man dies irgendwie umgehen, dass er dieses Ordner nicht mit in Betrachtung zieht ?
    Das nächste Problem, welches mir aufgefallen ist, betrifft die Suche in den Unterordnern. Ist dieser Ansatz zunächst einmal richtig, den ich gewählt habe ?

    Visual Basic-Quellcode

    1. 'Festelgen der Variablen
    2. Dim Dateisystem, Verzeichnis, Datei, Verzeichnispfad, Unterverzeichnis, PST_Sicherung
    3. PST_Sicherung = "D:\PST-Datein"
    4. 'Anlegen des Verzeichnissen PST-Datein
    5. Set Verzeichnisname = CreateObject("Scripting.FileSystemObject")
    6. If Not Verzeichnisname.FolderExists (PST_Sicherung) Then
    7. Verzeichnisname.CreateFolder (PST_Sicherung)
    8. Else
    9. End If
    10. 'Funktion zum Durchsuchen der Verzeichnisse
    11. Function durchsuchen (verzeichnispfad, dateierweiterung) ' Prozedur zum Suchen der Datei
    12. Set Dateisystem = CreateObject("Scripting.FileSystemObject") ' Erzeugen eines Objektes
    13. Set Verzeichnis = Dateisystem.GetFolder(verzeichnispfad) ' Der Variable Verzeichnis das FileSystem-Objekt zuweisen
    14. For Each Datei In Verzeichnis.Files
    15. If LCase(Dateisystem.GetExtensionName(Datei.Name)) = LCase(dateierweiterung) Then 'Überprüfung, wenn ExtensionName (dateierweiterung) = der gesuchten Dateierweiterung ist
    16. Datei.Copy(PST_Sicherung)
    17. End If
    18. Next
    19. 'Durchsuchen der Unterverzeichnisse
    20. For Each Unterverzeichnis In Verzeichnis.SubFolders
    21. WScript.Echo Unterverzeichnis
    22. durchsuchen Unterverzeichnis.Path, Dateityp
    23. Next
    24. End Function
    25. Suchpfad = "C:\"
    26. Dateityp = "pst"
    27. Suchergebnis = durchsuchen(Suchpfad, Dateityp)
    28. WScript.Echo Suchergebnis


    Schon einmal vielen Dank für Eure Bemühungen.-

    Gruß

    ZDeathZ