Problem DirMove

  • Moin,

    Ziel ist es am 1. jeden Monats mehrere passende Ordner in einen neuen Ordner zu verschieben.
    Beispiel der Ordnerstruktur und des Arrays siehe Anhang.
    Alle Ordner mit "2010-11-*" sollen nun in den Ordner "2010-11".
    DirMove liefert nun aber jedesman @error = 0.

    Woran kann das liegen?

    Spoiler anzeigen
    [autoit]

    ;Prüfen, ob neuer Monat
    If $Tag = 8 Then
    ;letzten Monat ermitteln
    ;~ If $Monat = 1 Then
    ;~ $Monat = 12
    ;~ $Jahr = $Jahr - 1
    ;~ Else
    ;~ $Monat = $Monat - 1
    ;~ EndIf
    ;Monatsordner anlegen
    If Not FileExists($Sicherungslaufwerk & $Jahr & "-" & $Monat) Then
    DirCreate($Sicherungslaufwerk & $Jahr & "-" & $Monat)
    EndIf
    ;Ordner des letzten Monats holen
    $Ordner =_FileListToArray($Sicherungslaufwerk, $Jahr & "-" & $Monat & "-*", 2)
    _ArrayDisplay($Ordner, "Ordner")
    ;Einzelne Ordner kopieren
    If @error = 0 Then
    For $i = 1 to $Ordner[0]
    MsgBox(0,"","'" & $Sicherungslaufwerk & $Ordner[$i] & "'" & " - " & "'" & $Sicherungslaufwerk & $Jahr & "-" & $Monat & "'")
    DirMove($Sicherungslaufwerk & $Ordner[$i], $Sicherungslaufwerk & $Jahr & "-" & $Monat, 0)
    MsgBox(0,"",@error)
    Next
    EndIf
    EndIf

    [/autoit]

    Laufwerk ist eine USB-Festplatte.
    Betriebssystem ist Windows Server 2003 (32-bit)

  • Vieleicht werden bestimmte Dateien, die sich in den zu verschiebende Ordner befinden, gerade benutzt.
    Es könnte aber auch sein, dass du nicht die erforderlichen Rechte besitzt, um die Dateien zu verschieben.

    Setz mal an den anfang des Scriptes

    [autoit]

    #RequireAdmin

    [/autoit]

    Und beim Befehl DirMove fällt mir folgendes auf:
    $Sicherungslaufwerk & $Ordner[$i]

    Müsste es denn nicht so heißen:
    $Sicherungslaufwerk & "\" & $Ordner[$i]

    MfG,
    H2112.

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • In Benutzung sind sie nicht. Per Hand kann ich die Ordner verschieben.

    Der Benutzer ist eigentlich Admin, habs aber trotzdem mit eingebaut. Hat nichts bewirkt.

    Der "\" ist in $Sicherungslaufwerk mit drin (siehe auch Screenshot MsgBox).

  • Also, jetzt klappt es. Obwohl als @error immer noch 0 zurückkommt.
    Den Sinn verstehe ich auch nicht ganz. Existiert hat außer dem Verzeichnis "2010-11" nichts.
    Und das was die Hilfe dazu sagt, war ja genau das was ich wollte: "Wenn das Zielverzeichnis schon existiert, das Quellverzeichnis in das Zielverzeichnis verschieben."

  • Ja, das funktioniert aber nur wenn du auch den Flag für's überschreiben setzt.

    Hä? In der Hilfe steht:

    flag [optional] dieser Parameter gibt an, ob eventuell schon existierende Dateien überschrieben werden sollen oder nicht.
    0 = (Standard) kein Überschreiben von bestehenden, gleichnamigen Dateien
    1 = Überschreiben gleichnamiger Dateien

    Wenn der Zielort schon existiert, und bei "flag" angegeben wird, dass nichts überschrieben werden soll, so wird das Quellverzeichnis in das Zielverzeichnis verschoben.

    Heißt für mich, flag soll 0 sein.

    Zu dem @error: DirMove() setzt kein @error sondern gibt 1 bzw. 0 zurück. Das @error das du dort abfängst stammt vom _ArrayDisplay().

    Stimmt. Gar nicht bemerkt.