Ordner umbenennen

  • Hallo,
    wie kann ich einen Ordner umbenennen ohne ihn zu verschieben?

    Einmal editiert, zuletzt von xp_fan (12. Dezember 2009 um 10:36)

  • Guten Morgen!


    In der hilfe steht: Weil AutoIt eine "Ordner Umbenennen"-Funktion fehlt, ist DirMove zu benutzen, um einen Ordner umzubenennen!

    Beispiel:

    [autoit]

    DirMove(@ScriptDir & '\Test',@ScriptDir & '\Test1')

    [/autoit]


    LG Kleiner

    • Offizieller Beitrag

    Ich hab mal eine Funktion zum Umbenennen geschrieben.
    Der Unterschied zu DirMove: Als Zielname braucht nur der neue Ordnername angegeben werden, da der Pfad ja identisch ist. Pfadangabe stört aber nicht, da dieser dann abgeschnitten wird.

    Spoiler anzeigen
    [autoit]

    ; Aufruf:
    _DirRename('C:\test', 'C:\Neu')
    ; oder auch
    _DirRename('C:\test', 'Neu')

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

    ;===============================================================================
    ; 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 ;==>_DirRename

    [/autoit]