Ordner umbenennen mit DirMove funktioniert nicht

  • Hallo zusammen.

    Woran kann es liegen, dass das Umbenennen eines Ordners nicht funktioniert?
    Mache das bekanntermaßen mithilfe von DirMove. Hatte auch schon eine UDF aus dem Forum hier getestet, tat auch nicht.
    Ich habe hier Autoit v3.3.8.1 (lt. Hilfedatei) in Verwendung.

    [autoit]

    DirMove($Folder, $Folder&"_temp", 1)

    [/autoit]


    $Folder ist ein vollständiger Ordnerpfad.
    Der Ordner mit "_temp" existiert noch nicht.
    Das ganze spielte sich in den Tests z.B. auf dem Desktop ab - alle Berechtigungen hat das, Desktop ist für den Admin, mit dem ich das Script zwischenzeitlich ausgeführt hatte, nicht schreibgeschützt oder so was. Habe keine Ahnung, woran das liegen soll. Möchte mir aber sparen, den Ordner kopieren und löschen zu müssen, um ihn hinterher wieder kopieren und wieder löschen zu müssen. Die temporäre Umbenennung wäre mir deutlich lieber.

    Danke schonmal! ;)

    Einmal editiert, zuletzt von Weisgarnix (1. Mai 2013 um 13:40) aus folgendem Grund: Präfix ändern

  • [autoit]


    #cs
    source dir Pfad zum Quellordner ohne abschließenden Backslash (z.B. "C:\Path1")
    dest dir Pfad zum Zielordner ohne abschließenden Backslash (z.B. "C:\Path1_Copy")

    [/autoit][autoit][/autoit][autoit]

    Wie sieht denn $Folder aus?
    #ce
    Dim $Folder ;= "..."
    MsgBox(0, "", $Folder & @TAB)
    ; Wenn $Folder oben ohne Backslash ist,
    ; muss er hier nicht angegeben werden "\_temp" ?
    DirMove($Folder, $Folder & "\_temp", 1)
    Exit
    ; Ende

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Oder probier es mal mit der UDF von Bugfix:

    Spoiler anzeigen
    [autoit]


    #include-once
    ;===============================================================================
    ; Function Name: _DirRename($sSourcePath, $sNewFolderName, $sComputer='.')
    ; Description:: Ordner auf lokalem oder Remote-PC umbenennen
    ; Parameter(s): $sSourcePath der volle Pfad des umzubenennenden Ordners
    ; $sNewFolderName der neue Ordnername (Name oder Pfad möglich)
    ; wenn Pfad mit angegeben, wird dieser autom. entfernt
    ; [optional] $sComputer Computername, Standard: der lokale PC
    ; Return Value(s): Erfolg 1
    ; Fehler 0 @error 1 Ordner existiert nicht
    ; 2 Zielordner existiert bereits
    ; 3 Umbenennen fehlgeschlagen
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _DirRename($sSourcePath, $sNewFolderName, $sComputer='.')
    If Not FileExists($sSourcePath) Then Return SetError(1,0,0)
    $sSourcePath = StringRegExpReplace($sSourcePath, '\\+\z', '')
    Local $sParent = StringLeft($sSourcePath, StringInStr($sSourcePath, '\', 1, -1))
    $sSourcePath = StringRegExpReplace($sSourcePath, '\\', '\\\\')
    $sNewFolderName = StringRegExpReplace($sNewFolderName, '\\+\z', '')
    Local $ret = StringRegExp($sNewFolderName, '(?:\\)(\w+\z)|\w+', 3)
    $sNewFolderName = $ret[UBound($ret)-1]
    Local $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $sComputer & "\root\cimv2")
    Local $colFolders = $objWMIService.ExecQuery ("Select * from Win32_Directory where name = '" & $sSourcePath & "'")
    Local $err
    For $objFolder In $colFolders
    $err = $objFolder.Rename($sParent & $sNewFolderName)
    If $err = 0 Then
    Return 1
    ElseIf $err = 10 Then
    Return SetError(2,0,0)
    Else
    Return SetError(3,0,0)
    EndIf
    Next
    EndFunc

    [/autoit]


    Fliwatt

  • RR04: Wenn ich den Backslash noch anfüge, verschiebe ich den Ordner in einen Unterordner des Ausgangsordners namens "_temp", ich will ja aber dem Ordner nur "_temp" anhängen, ihn also umbenennen und nicht wirklich verschieben...
    Fliwatt: Jop, das ist die UDF, mit der ich es bereits versucht habe. Klappt genauso wenig, sprich: gar nicht :/
    Ich hatte die Hoffnung, dass das ein Bug ist, der bekannt ist, aber kann mir das eigentlich nicht vorstellen :(
    Weitere Vorschläge gerne ;)

    *Edit*: Ich habs gefunden.

    Ich hatte es eigentlich schon gestern Abend durchsucht gehabt, ob es das sein könnte. Aber naja, gestern Abend war eigentlich nachts um halb 3. Bin dann ja auch pennen gegangen^^
    Der Fehler ist mir bewusst geworden, nachdem ich nochmal debugged habe per MsgBox (thx RR04). Ich habe schlichtweg den falschen Ordner umbenannt, in meinem Fall Desktop anstatt eines Ordners auf dem Desktop.
    Ich bitte wegen dieser Peinlichtkeit um Entschuldigung und danke nochmal allen Helfenden hier!

    Einmal editiert, zuletzt von Weisgarnix (1. Mai 2013 um 13:39)

  • Vergesst es, mein Beitrag war Müll :thumbdown:

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"