Log Dateien, die älter sind als x Tage, an beliebigen Ort verschieben

  • VBScript

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von silver-s3.

    Log Dateien, die älter sind als x Tage, an beliebigen Ort verschieben

    Hallo zusammen

    Bin gerade daran einen Script zu schreiben, um Logdateien welche älter sind als x beliebige Tage sind, in einen anderen Ordner zu verschieben.

    Das habe ich bis jetzt geschafft:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim intTage
    3. Dim objDatei
    4. Dim objFSO
    5. Dim objOrdner
    6. Dim strOrdner
    7. Set objFSO = CreateObject("Scripting.FileSystemObject")
    8. strOrdner = "C:\Users\zev534\Desktop\VBScript\dateien löschen"
    9. intTage = 3
    10. Set objOrdner = objFSO.GetFolder(strOrdner)
    11. For Each objDatei In objOrdner.Files
    12. If DateDiff("d", objDatei.DateLastModified, Now) > intTage Then
    13. objDatei.MoveFile "C:\Users\zev534\Desktop\VBScript\dateien löschen\" & objDatei & "", "C:\Users\zev534\Desktop\VBScript\dateien löschen\test"
    14. End If
    15. Next

    Wenn ich die Dateien löschen will, das heisst mit objDatei.Delete dann funktioniert es problemlos, aber mit MoveFile kommt eine Fehlermeldung:
    Das Objekt unterstützt diese Eigenschaft oder Methode nicht: 'MoveFile'

    Kann mir jemand weiterhelfen?

    Freundliche Grüsse

    silver-s3

    Edit by der_Kurt:
    Bei Script nehme ich mal an, du programmierst eine VBS-Datei.
    Achte bitte auf das richtige Unterforum, dann bleiben Verwirrungen erspart.
    * Topic verschoben *

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „der_Kurt“ ()

    Fange bitte mit

    Visual Basic-Quellcode

    1. Option Strict On
    2. Option Explicit On

    an, korrigiere Deinen Quelltext und verwende den "VB"-Button oberhalb des Texteingabefeldes, wenn Du die korrigieerten Quellen postest.
    Dann werden Sie geholfen. :D
    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!
    Ouh sry, habe es angepasst.

    so nun der aktuelle Quellcode:

    Visual Basic-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Dim intTage
    4. Dim objDatei
    5. Dim objFSO
    6. Dim objOrdner
    7. Dim strOrdner
    8. Set objFSO = CreateObject("Scripting.FileSystemObject")
    9. strOrdner = "C:\Users\zev534\Desktop\VBScript\dateien löschen"
    10. intTage = 3
    11. Set objOrdner = objFSO.GetFolder(strOrdner)
    12. For Each objDatei In objOrdner.Files
    13. If DateDiff("d", objDatei.DateLastModified, Now) > intTage Then
    14. objDatei.MoveFile "C:\Users\zev534\Desktop\VBScript\dateien löschen\" & objDatei & "", "C:\Users\zev534\Desktop\VBScript\dateien löschen\test"
    15. End If
    16. Next


    Jetzt kommt Syntaxfehler in beiden Zeilen..
    Ich weiß nicht, was Du gemacht hast.
    Bei mir kommt schon bei

    Visual Basic-Quellcode

    1. Dim intTage

    der Fehler
    "Option Strict On" erfordert von allen Variablendeklarationen eine As-Klausel.

    Dies wollte ich Dich bitten zunächst zu beseitigen.
    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!

    Visual Basic-Quellcode

    1. Option Strict On
    2. Option Explicit
    3. Dim intTage as Tage
    4. Dim objDatei as Datei
    5. Dim objFSO as FSO
    6. Dim objOrdner as Ordnerinhalt
    7. Dim strOrdner as Ordner
    8. 'Dim SubFolder as Unterordner
    9. Set FSO = CreateObject("Scripting.FileSystemObject")
    10. Ordner = "C:\Users\zev534\Desktop\VBScript\dateien löschen"
    11. Tage = 3
    12. Set Ordnerinhalt = FSO.GetFolder(Ordner)
    13. For Each Datei In Ordnerinhalt.Files
    14. If DateDiff("d", Datei.DateLastModified, Now) > Tage Then
    15. Datei.MoveFile "C:\Users\zev534\Desktop\VBScript\dateien löschen\" & Datei & "", "C:\Users\zev534\Desktop\VBScript\dateien löschen\test"
    16. End If
    17. Next


    Kommt leider immer noch Syntaxfehler, oder mache ich bei den AS Klauseln etwas falsch?
    Was für Typen sind "Tage", "Datei", "FSO" usw.
    Sieh Dir doch bitte erst mal die Grundlagen der Programmierung an, wir müssen nämlich dasselbe meinen, wenn wir dasselbe sagen. ?(
    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!
    eigentlich wollte ich nicht gleich ein Programmierer werden, habe nur gedacht jemand könnte mir schnell helfen einen Script zusammenzustellen, welcher Dateien irgendwo hinverschiebt, weil das mit dem, wenn es älter ist als..., funktioniert ja wunderbar.

    Nur das Verschieben ist das Problem, bringt mir also nicht viel wenn ich anfange den ganzen Code zu verändern.
    Sieh Dir mal diesen VB.NET-Code an (der läuft):

    Visual Basic-Quellcode

    1. Dim source, destination As String
    2. source = "c:\temp\xxx.txt"
    3. destination = "c:\temp\temp\xxx.txt"
    4. System.IO.File.Move(source, destination)
    5. System.IO.File.Delete(source)

    Kann es sein, dass Dein

    Visual Basic-Quellcode

    1. MoveFile()
    lediglich ein falscher Befehl ist?
    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!
    Danke erstmal für die Hilfe.

    Habe es jetzt so abgeändert:

    Visual Basic-Quellcode

    1. Set objOrdner = objFSO.GetFolder(strOrdner)
    2. For Each objDatei In objOrdner.Files
    3. If DateDiff("d", objDatei.DateLastModified, Now) > intTage Then
    4. Source = "C:\Users\zev534\Desktop\VBScript\dateien löschen\" & objDatei & ""
    5. Destination = "C:\Users\zev534\Desktop\VBScript\dateien löschen\test"
    6. System.IO.File.Move(Source, Destination)
    7. End If
    8. Next


    Jetzt kommt die Meldung:
    Beim Aufrufen einer Unterroutine (Sub) dürfen keine Klammern verwendet werden.

    Kann das oben eigentlich so funktionieren?
    Weil ich will ja nur diese Dateien verschieben, welche auch wirklich älter als 3 Tage sind.

    Grüsse
    silver-s3