Hi,
hiermit präsentiere ich Euch die UDF _FileRename. Durch den DOS-Befehl soll das Umbenennen bei großen Dateien im Vergleich zu FileMove deutlich schneller sein. Dies habe ich jedoch nicht ausprobiert. Siehe dazu auch: http://www.autoitscript.com/forum/index.php?showtopic=70058
Spoiler anzeigen
;===============================================================================
; Function Name.....: _FileRename
; Description.......: Renames a file using the command "rename".
; Version...........: 1.0.4
; Change Date.......: 2008-07-29
; AutoIt Version....: 3.2.12.1
;
; Parameter(s)......: $S_FILE - String containing the directory or file to rename.
; $S_RENAME - String containing the new name of the file, without the path.
; Requirements(s)...: None
; Return Value(s)...: Success: Returns the exit code of the "rename" command.
; Failure: Returns 0 and sets @error to:
; 1 = The file or folder $S_FILE does not exist.
; 2 = $S_RENAME is an invalid filename.
;
; Author(s).........: xVivoCity
; Modified by: JellyFish666 & litlmike
; Modified by: teh_hahn <[email='sPiTsHiT@gmx.de'][/email]>
; Company...........: None
; URL...............: None
; Note(s)...........: None
;===============================================================================
Func _FileRename(Const $S_FILE, Const $S_RENAME)
If Not FileExists($S_FILE) Then Return SetError(1, 0, 0)
If Not StringRegExp($S_RENAME, '(?i)^[^<>\?":\|\\/\*]+$') Then Return SetError(2, 0, 0)
Return RunWait(@ComSpec & ' /c ren "' & $S_FILE & '" "' & $S_RENAME & '"', "", @SW_HIDE)
EndFunc ;==>_FileRename
EDIT: Wie Oscar festgestellt hat, ist diese Funktion doch nicht schneller als FileMove! Aus diesem Grund hier eine modifizierte Version mit FileMove:
Spoiler anzeigen
;===============================================================================
; Function Name.....: _FileRename
; Description.......: Renames a file.
; Version...........: 1.0.5
; Change Date.......: 2008-08-04
; AutoIt Version....: 3.2.12.1
;
; Parameter(s)......: $S_SOURCE - String containing the source path and filename of the file to rename.
; $S_DEST - String containing the new filename of the file, without the path.
; $i_flag - [optional] Integer specifying whether to overwrite a file if it already exist or not:
; 0 = (default) Do not overwrite a existing file.
; 1 = Overwrite a existing file.
; Requirements(s)...: None
; Return Value(s)...: Success: Returns 1
; Failure: Returns 0 and sets @error to:
; 1 = The file or folder $S_SOURCE does not exist.
; 2 = $S_DEST is an invalid filename.
; 3 = The source file $S_SOURCE cannot be moved or the destination file $S_DEST already exists and the flag $i_flag is set to 0.
;
; Author(s).........: teh_hahn <[email='sPiTsHiT@gmx.de'][/email]>
; Company...........: None
; URL...............: None
; Note(s)...........: None
;===============================================================================
Func _FileRename(Const $S_SOURCE, Const $S_DEST, $i_flag = 0)
If Not FileExists($S_SOURCE) Then Return SetError(1, 0, 0)
If Not StringRegExp($S_DEST, '(?i)^[^<>\?":\|\\/\*]+$') Then Return SetError(2, 0, 0)
If $i_flag <> 1 Then $i_flag = 0
If Not FileMove($S_SOURCE, StringLeft($S_SOURCE, StringInStr($S_SOURCE, "\", 0, -1) - 1) & "\" & $S_DEST, $i_flag) Then Return SetError(3, 0, 0)
EndFunc ;==>_FileRename