neue Version, mit verbessertem Algorithmus und Zählervariable %n.
Dieses Projekt ist aus aktuellem Anlass für mich entstanden, ich musste 30 .caf-Dateien in .aif-Dateien umbenennen. Deshalb dies:
Ein Tool zum Umbenennen von Dateien.
Nicht alle Buttons bzw. Checkboxes/Inputs haben schon die Funktion, aber man kann schon massenhaft Dateien umbenennen, mit Suchen/Ersetzen und Dateiendung ersetzen.
Todo
Zählervariable
Outputusability
Ext.-anhängen
Hoffe, es gefällt.
/edit: Jetzt mit Code
Spoiler anzeigen
#include <Array.au3>
#include <File.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#Region Globals
Global $oldFILETYPE
#EndRegion Globals
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("RenamR", 588, 432, 193, 125)
$Input = GUICtrlCreateGroup("Input", 8, 80, 569, 161)
$inputINPUT = GUICtrlCreateInput("", 64, 200, 401, 21)
$inputdirBUTTON = GUICtrlCreateButton("Ordner wählen...", 16, 104, 137, 33, 0)
$filetypeCHECK = GUICtrlCreateCheckbox("Dateityp:", 216, 96, 160, 17)
;~ $Label5 = GUICtrlCreateLabel("Dateityp:", 232, 96, 144, 17)
$filetypeINPUT=GUICtrlCreateInput("", 384, 96, 180, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Output = GUICtrlCreateGroup("Output", 8, 256, 569, 161)
;~ $outputdirBUTTON = GUICtrlCreateButton("Ordner wählen...", 16, 280, 129, 33, 0)
$outputINPUT = GUICtrlCreateInput("%1", 72, 384, 393, 21)
$replaceCHECK = GUICtrlCreateCheckbox("", 168, 272, 17, 17)
$replaceINPUT = GUICtrlCreateInput("", 240, 272, 97, 21)
$Label1 = GUICtrlCreateLabel("mit", 344, 272, 25, 17)
$withINPUT = GUICtrlCreateInput("", 384, 272, 145, 21)
;~ $countCHECK = GUICtrlCreateCheckbox("", 168, 312, 17, 17)
$Label2 = GUICtrlCreateLabel("Ersetze", 184, 272, 39, 17)
$Label3 = GUICtrlCreateLabel("Zählervariable %n; Start:", 186, 314, 122, 17)
$startINPUT = GUICtrlCreateInput("", 320, 312, 25, 21)
$Label4 = GUICtrlCreateLabel("Stellen:", 360, 312, 39, 17)
$stellenINPUT = GUICtrlCreateInput("", 408, 312, 33, 21)
$Dateiendung = GUICtrlCreateLabel("Dateiendung", 192, 344, 65, 17)
$postfixreplaceCHECK = GUICtrlCreateRadio("ersetzen", 280, 336, 65, 17)
$postfixappendCHECK = GUICtrlCreateRadio("anhängen", 280, 352, 65, 17)
$postfixINPUT = GUICtrlCreateInput("", 360, 344, 49, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$startBUTTON = GUICtrlCreateButton("Umbenennen starten", 392, 16, 177, 49, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUIRegisterMsg($WM_COMMAND,"_update")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $inputINPUT
Case $inputdirBUTTON
_SetDir($inputINPUT)
Case $filetypeCHECK
If GUICtrlRead($filetypeCHECK) = $GUI_CHECKED Then
_SetParams()
Else
GUICtrlSetData($filetypeINPUT,"")
_SetParams()
EndIf
;~ Case $outputdirBUTTON
;~ _SetDir($outputINPUT)
Case $outputINPUT
Case $replaceCHECK
Case $replaceINPUT
Case $withINPUT
;~ Case $countCHECK
Case $startINPUT
Case $stellenINPUT
Case $Dateiendung
Case $postfixreplaceCHECK
Case $postfixappendCHECK
Case $postfixINPUT
Case $startBUTTON
_RenderRename()
EndSwitch
WEnd
Func _SetDir($hHandle)
Local $params
$old=GUICtrlRead($hHandle)
$folder=FileSelectFolder("Ordner auswählen","")
If not FileExists($folder) Then Return
If $old <> "" Then
$bspos=StringInStr($old,"\",Default,-1)
$params=StringTrimLeft($old,$bspos)
EndIf
If StringRight($folder,1) <> "\" Then $folder=$folder & "\"
Switch $hHandle
Case $inputINPUT
If $params="" Then $params="*.*"
;~ Case $outputINPUT
;~ If $params="" Then $params="%1"
EndSwitch
$folder=$folder & $params
GUICtrlSetData($hHandle,$folder)
EndFunc
Func _update()
;~ TrayTip("","Command",1)
If $oldFILETYPE <> GUICtrlRead($filetypeINPUT) And GUICtrlRead($filetypeCHECK) = $GUI_CHECKED Then _SetParams()
$oldFILETYPE=GUICtrlRead($filetypeINPUT)
EndFunc
Func _SetParams()
$filetype=GUICtrlRead($filetypeINPUT)
$old=GUICtrlRead($inputINPUT)
$bspos=StringInStr($old,"\",Default,-1)
$params=StringTrimLeft($old,$bspos)
;~ MsgBox(0,"",$params)
$prefix=StringLeft($params,StringInStr($params,".",Default,-1)-1);TrimRight
If $prefix="" Then $prefix=$params
;~ MsgBox(0,"",$prefix)
$folder=StringLeft($old,$bspos)
If $filetype="" Then $filetype="*"
;~ MsgBox(0,"",$prefix & "." & $filetype)
GUICtrlSetData($inputINPUT,$folder & $prefix & "." & $filetype)
EndFunc
Func _RenderRename()
Local $boolReplace=False, $boolPostfixReplace=False,$boolPostfixAppend=False
$data=GUICtrlRead($inputINPUT)
$bspos=StringInStr($data,"\",Default,-1)
$params=StringTrimLeft($data,$bspos)
$folder=StringLeft($data,$bspos)
$FILES_OLD=_FileListToArray($folder,$params,1)
_ArrayDisplay($FILES_OLD)
If GUICtrlRead($replaceCHECK) = $GUI_CHECKED Then $boolReplace=True
If GUICtrlRead($postfixreplaceCHECK) = $GUI_CHECKED Then $boolPostfixReplace=True
If GUICtrlRead($postfixappendCHECK) = $GUI_CHECKED Then $boolPostfixAppend=True
$rep=GUICtrlRead($replaceINPUT)
$with=GUICtrlRead($withINPUT)
$startCOUNT=GUICtrlRead($startINPUT)-1
If $startCOUNT = -1 Then $startCOUNT = 0
$stellenCOUNT=GUICtrlRead($stellenINPUT)
If $stellenCOUNT = "" Then $stellenCOUNT = "-"
For $COUNTER=1 To $FILES_OLD[0] Step 1
$postfixorig=StringTrimLeft($FILES_OLD[$COUNTER],StringInStr($FILES_OLD[$COUNTER],".",Default,-1))
$newname=GUICtrlRead($outputINPUT)
$newname=StringReplace($newname,"%1",$FILES_OLD[$COUNTER])
$newname=StringReplace($newname,"%e",$postfixorig)
If $boolReplace Then $newname=StringReplace($newname,$rep,$with)
$newname=StringReplace($newname,"%n",StringFormat("%0" & $stellenCOUNT & "d",$COUNTER+$startCOUNT))
If $boolPostfixReplace Then $newname=_ReplacePostfix($newname,GUICtrlRead($postfixINPUT))
If $boolPostfixAppend Then $newname &= GUICtrlRead($postfixINPUT)
FileMove($folder & $FILES_OLD[$COUNTER],$folder & $newname)
;~ MsgBox(64,$folder & $FILES_OLD[$COUNTER],$folder & $newname)
Next
MsgBox(0,"RenamR","Alle Dateien wurden umbenannt")
EndFunc
Func _toggle($hHandle)
If $hHandle = $GUI_CHECKED Then
GUICtrlSetData($hHandle,$GUI_UNCHECKED)
Else
GUICtrlSetData($hHandle,$GUI_CHECKED)
EndIf
EndFunc
Func _ReplacePostfix($string,$postfix)
If not StringinStr($string,".") Then return $string & "." & $postfix
Return StringLeft($string,StringInStr($string,".",Default,-1)-1) & "." & $postfix
EndFunc