Hallo,
wie kann ich einen Ordner umbenennen ohne ihn zu verschieben?
Ordner umbenennen
-
- [ gelöst ]
-
xp_fan -
12. Dezember 2009 um 08:42 -
Geschlossen -
Erledigt
-
-
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
-
Danke, dann werd' ich's wohl so machen müssen!
-
- 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:
[/autoit] [autoit][/autoit] [autoit]
_DirRename('C:\test', 'C:\Neu')
; oder auch
_DirRename('C:\test', 'Neu');===============================================================================
[/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 -
Danke, funzt super!
