Dateien werden nur teilweise erfasst, VBS Skipt Verarbeitung, Netzlaufwerk zu langsam?

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Dateien werden nur teilweise erfasst, VBS Skipt Verarbeitung, Netzlaufwerk zu langsam?

    Seehr geehrte Schwarmintiligenz,

    folgender Ausschnitt soll Dateien nach Endung sortieren und das aktuellste File nach DateLastModified ausgeben.
    In der Testumgebung Läuft das Script auf einem schnellen Netzlaufwerk problemlos ca. 5000 Dateien.
    In der Praxis wird auf ein langsameres Netzlaufwerk zugegriffen und das skript liest nur einen Teil der Dateien ein und gibt nach der Logik eine ältere Datei aus.

    Ich hoffe ihr habt einen Tipp für mich.


    Visual Basic-Quellcode

    1. sPath = "\\wurst\Brat\archiv"
    2. eack = "ACK"
    3. eibu = "IBU"
    4. sNewestFile = GetNewestFile(sPath)
    5. Function GetNewestFile(ByVal sPath)
    6. sNewestFile = Null ' initialisiere Wert
    7. Set oFSO = CreateObject("Scripting.FileSystemObject")
    8. Set oFolder = oFSO.GetFolder(sPath)
    9. Set oFiles = oFolder.Files
    10. ' Finde die neueste Datei unter allen anderen Dateien
    11. For Each oFile In oFiles
    12. if Ucase(oFSO.GetExtensionName(ofile)) = eack or Ucase(oFSO.GetExtensionName(ofile)) = eibu then 'selektiere Dateien mit der gewünschten Endung aus
    13. If IsNull(sNewestFile) Then
    14. sNewestFile = oFile.Path
    15. dPrevDate = oFile.DateLastModified
    16. Elseif dPrevDate < oFile.DateLastModified Then
    17. sNewestFile = oFile.Path
    18. End If
    19. end if
    20. Next
    21. If IsNull(sNewestFile) Then sNewestFile = " Kein File"
    22. GetNewestFile = sNewestFile
    23. End Function
    24. msgbox sNewestFile


    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Hallo und willkommen im Forum

    Ich denke nicht das es an der Geschwindigkeit liegt. Du hast eben keinerlei Fehlerbehandlung.
    Was ist wenn die Funktion an ein File kommt wo du keine Rechte hast dieses Auszulesen?

    Das bekommst du eben das File in die Variable welches als letztes hineingeschrieben wurde.
    Fange mal Fehler ub und stelle sicher das die funktion auch bis zum letzten File geht und nicht vorher abbricht.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Bratw0rst Ebenfalls Willkommen im Forum.
    Ich denke mal, dass es auch in VB6 ein Option Strict (on) gibt.
    Füge das mal ein und korrigiere die fehlenden oder unkorrekten Datentypen.
    Dann sehen wir weiter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Ich denke mal, dass es auch in VB6 ein Option Strict (on) gibt.
    Leider nein. Nur Option Explicit.
    Und in VBScript noch weniger.

    @TE:
    VB6 oder VBS? Label und Überschrift widersprechen sich.
    Sieht nach VBS aus, dann bitte das Label ändern.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    @Nofear23m

    Der Rechner von dem das Script aus Läuft hat ausnahmslos Admin Rechte, manuell kann ich alle Dateien bearbeiten und einsehen.

    Testweise habe ich eine vor meinen Script Ausschnitt eine Funktion gestellt, welche mir alle gefundenen Dateien in ein LogFile schreibt.
    Wenn ich das Script starte läuft es ohne Fehler bis die MsgBox erscheint, im LogFile werden je nach durchlauf 300-500 Dateien angezeigt.
    Merkwürdig ist eine Minute nach erscheinen der MsgBox ist das File Komplett voll mit allen 1302 Dateien.

    @petaod

    Ich kann das Label nicht weglassen und als Auswahl bekomme ich nur VB6 oder VB.Net bzw C/C++
    ja es ist ein Visual Basic Script.

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

    Bratw0rst schrieb:

    als Auswahl bekomme ich nur VB6 oder VB.Net bzw C/C++
    Das ist ein Indiz dafür, dass du im falschen Unterforum postest.
    Das VBS-Label hättest du im (richtigen) Unterforum Visual Basic Script (VBS) / Active Server Pages (ASP) bekommen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --