VBS Script - Nur bestimmte Dateien kopieren

  • VBScript

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

    VBS Script - Nur bestimmte Dateien kopieren

    Hallo Zusammen,
    ich bin neu hier und habe mal eine Frage.

    Sachverhalt: Programmiert werden soll ein Script , welches Ordner auf Dateien durchsucht. Wenn eine dieser Dateien im Namensanfang ein "ERR" stehen hat, soll diese Datei nicht kopiert werden.Alle anderen Dateien sollen kopiert werden.

    Wie kriege ich das am Besten hin? Ich muss das doch irgendwie ausschließen können (exclude)?

    Bin euch jetzt schon dankbar. Komme einfach nicht vorran

    Viele grüße

    Sajodino
    Ahoi,

    du lädst dir die Dateinamen doch sicher als Text, zb. in ein Array ... damit kannst du per instr ermitteln, ob in ERR enthalten ist.
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Hi, dank für eure Antorten.
    Ich habe mir ein bisschen aus dem Netz zusammen geschustert, also bitte nicht wundern wenn nicht alles Regelkonform gescriptet ist. Momentan durchsuche ich einen Ordner auf xls-Dateien und wenn er welche findet kopiert/verschiebt er diese auch. Das funktioniert.

    VB.NET-Quellcode

    1. Dim objFS, objFile
    2. Dim fso As Object
    3. Set fso = CreateObject("Scripting.FileSystemObject")
    4. Set fsoFile = fso.CreateTextFile("C:\demo.txt")
    5. strOrdner = "c:\exceltemp"
    6. aTypen = Array("xls")
    7. For Each sTyp In aTypen
    8. bIsDa = False
    9. For Each oFile In fso.GetFolder(strOrdner).Files
    10. If LCase(fso.GetExtensionName(oFile.Path)) = sTyp Then
    11. bIsDa = True
    12. Exit For
    13. End If
    14. Next
    15. If bIsDa = True Then
    16. fso.MoveFile "C:\exceltemp\*.xls", "C:\Zielordner\"
    17. fsoFile.WriteLine ("Daten verschoben")
    18. Else
    19. fsoFile.WriteLine ("keine Exceldateien gefunden")
    20. End If
    21. Next
    22. End Sub


    Ich komme einfach nicht drauf , wie ich Dateien mit "ERR" ausschließe von dem Kopierverfahren. ( Split ? und dann Instr?).
    Du gehst die Dateien durch, bist du eine xls gefunden hast und kopierst dann alle xls in einen anderen Ordner?
    Da du ja eh alle xls Dateien verschiebst, ist das setzen und abfragen deines bools bIsDa ziemlich sinnlos.
    Ich würde schon mal einiges mehr in deine For Each

    VB.NET-Quellcode

    1. ​For Each oFile In fso.GetFolder(strOrdner).Files
    packen.
    Nach deiner Abfrage des Typs, kannst du via

    VB.NET-Quellcode

    1. fso.GetFileName(oFile.Path)
    und Instr gleich noch erfragen, ob der Filename das ERR enthält und dann gleich diese Datei verschieben.

    VB.NET-Quellcode

    1. For Each oFile In fso.GetFolder(strOrdner).Files
    2. If (LCase(fso.GetExtensionName(oFile.Path)) = sTyp) AND (InStr(1, fso.GetFileName(oFile.Path), "ERR", 1) > 0) Then
    3. fso.MoveFile oFile.Path, "C:\Zielordner\"
    4. End If
    5. Next


    So in etwa ist jetzt ungetestet
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Hi Manu ,
    danke für die Hilfe. Der Code klappt aber hilft mir nicht weiter. Ich brauche das in etwa genau so, nur dass Dateien mit "ERR" nicht kopiert werden sondern ungetastet bleiben.Der Rest im Ordner (ohne ERR ) 9 soll kopiert werden.

    Viele Grüße

    Sajodino




    Hallo nochmal, habe IF not probiert und es geht. weiss jetzt aber nicht ob das so sauber ist.

    Viele Grüße

    Sajodino

    Mehrere Ordner

    Hi , ich habe mal eine erweiterte Frage. Ich will bestimmte Ordner inkl. deren Unterordner durchsuchen. Muss ich diese Ordner vorher deklarieren und jedes mal If-Abfragen schreiben für jeden Ordner?

    Beste Grüße

    Sajodino
    Ja stimmt du musst die Abfrage nach ERR natürlich negieren.
    Theoretisch ja ... wie in VBS mit Rekursion aussieht, kann ich leider nicht beantworten ... habe so tief noch nicht drin gesteckt.
    Mach dafür wohl lieber ein neues Thema auf
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de

    Manü schrieb:

    wie in VBS mit Rekursion aussieht, kann ich leider nicht beantworten
    Das ist zwar ein VBA-Beispiel, aber wenn du Zeile 1 und 3 weglässt, geht das auch in VBS.
    Verzeichnisbaum nach Datei durchsuchen und bestimmte Zelle in eine andere Datei schreiben
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --