Hey =)
möchte hier mal mein erstes, komplett selbstgeschriebenes Tool
reinstellen =)
Damit kann man viele Datein (und dazuwählbar Ordner) auf einen Schlag umbennen.
Das Tool unterstützt bestimmte längen der Dateinamen links und rechts wegzuschneiden,
bis zu einem bestimmten String oder Zeichen alle Zeichen abzuschneiden,
Zeichen zu ersetzen per Liste (in Dateiform) oder Zeichen bzw Zeichenketten komplett
wegzuschneiden.
Feedback wäre gut.
(Ich weis das es sowas vllt schon giebt,
auch das es sowas vllt schon besser giebt
aber das is kein Grund hier rumzuflamen, danke)
Link
Zitat
Passwort
ZitatNachid
Feedback nicht vergessen
Da öfters nach dem Code gefragt wurde :
Spoiler anzeigen
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=wricon.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Description=Renamer Programm by Nachid
#AutoIt3Wrapper_Res_Fileversion=1.0.1.3
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=p
#AutoIt3Wrapper_Res_LegalCopyright=(C) by Nachid
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_res_requestedExecutionLevel=requireAdministrator
#AutoIt3Wrapper_Run_Tidy=y
#AutoIt3Wrapper_Tidy_Stop_OnError=n
#AutoIt3Wrapper_Run_Obfuscator=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <GUIConstantsEx.au3>
#include <File.au3>
#include <Array.au3>
If $CmdLine[0] = 1 Then
If $CmdLine[1] = "source" Then
FileInstall("Warez-Rename.au3", @ScriptDir & "\Warez-Rename(source).au3", 1)
EndIf
EndIf
If $CmdLine[0] = 3 Then
FileMove($CmdLine[2], $CmdLine[3])
Exit (1)
EndIf
FileInstall("nachid.jpg", @TempDir & "\Nachid", 1)
SplashImageOn("Loading", @TempDir & "\Nachid", 337, 141, @DesktopWidth / 2 - 165, @DesktopHeight / 2 - 70, 1)
Sleep(3000)
SplashOff()
GUICreate("Warez- Renamer", 300, 200)
GUICtrlCreateLabel("Pfad", 5, 10, 120, 20)
GUICtrlSetFont(-1, 11, 550)
$gefunden = GUICtrlCreateLabel("Gefunden : 0 Daten", 100, 5, 120, 20)
$path = GUICtrlCreateInput("", 5, 30, 200, 20)
$spath = GUICtrlCreateButton("....", 205, 30, 45, 20)
$input = GUICtrlCreateInput("Input", 5, 60, 200, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
$todo = GUICtrlCreateCombo("Optionen", 5, 90, 200, 20)
GUICtrlSetData(-1, "Vorne abschneiden|Hinten abschneiden|Abschneiden bis..|Ersetze|Entferne")
$allfiles = GUICtrlCreateCheckbox("Alle Daten in allen Unterordnern finden ?", 5, 120, 210, 20)
$folders = GUICtrlCreateCheckbox("Ordner umbenennen ?", 5, 140, 150, 20)
$backup = GUICtrlCreateCheckbox("Backupdatei erstellen ?", 5, 160, 210, 20)
GUICtrlSetState(-1, $GUI_CHECKED)
$percent = GUICtrlCreateProgress(5, 180, 290, 20)
$go = GUICtrlCreateButton(" ! GO ! ", 210, 140, 80, 20)
GUISetState()
Global $filelist
Global $rename
Global $isfolder
Global $folder2rename
While 1
$msg = GUIGetMsg()
If $msg = -3 Then Exit (1)
If $msg = $spath Then
GUICtrlSetData($path, FileSelectFolder("Ordner suchen...", "", 5))
EndIf
If $msg = $todo Then
$dump = GUICtrlRead($todo)
Select
Case $dump = "Optionen"
GUICtrlSetState($input, $GUI_DISABLE)
GUICtrlSetData($input, "Input")
Case $dump = "Vorne abschneiden" Or $dump = "Hinten abschneiden"
GUICtrlSetState($input, $GUI_ENABLE)
GUICtrlSetData($input, "Wie viele Buchstaben ?")
Case $dump = "Abschneiden bis.."
GUICtrlSetState($input, $GUI_ENABLE)
GUICtrlSetData($input, "")
MsgBox(36, "Hilfe", "Die Funktion Abschneiden bis.. schneidet alle Zeichen bis zu dem Xten Vorkommen " & @CRLF & _
"eines gegeben Zeichens ab. Der Befehl ist wie folgt aufgebaut : " & @CRLF & @CRLF & _
"Zeichen|Vorkommen" & @CRLF & _
"Beispiel : a|1")
Case $dump = "Ersetze"
GUICtrlSetData($input, FileOpenDialog("Liste", @ScriptDir, "Warez - Rename (*.*)"))
Case $dump = "Entferne"
GUICtrlSetState($input, $GUI_ENABLE)
GUICtrlSetData($input, "Zu entfernen, mit | Zeichen trennen")
EndSelect
EndIf
If $msg = $go Then
If GUICtrlRead($allfiles) = 4 And GUICtrlRead($folders) = 1 Then
$filelist = _FileListToArray(GUICtrlRead($path))
For $i = 1 To $filelist[0] Step +1
If StringRight(GUICtrlRead($path), 1) = "\" Then
$filelist[$i] = GUICtrlRead($path) & $filelist[$i]
Else
$filelist[$i] = GUICtrlRead($path) & "\" & $filelist[$i]
EndIf
Next
EndIf
If GUICtrlRead($allfiles) = 4 And GUICtrlRead($folders) = 4 Then
$filelist = _FileListToArray(GUICtrlRead($path), "*", 1)
For $i = 1 To $filelist[0] Step +1
If StringRight(GUICtrlRead($path), 1) = "\" Then
$filelist[$i] = GUICtrlRead($path) & $filelist[$i]
Else
$filelist[$i] = GUICtrlRead($path) & "\" & $filelist[$i]
EndIf
Next
EndIf
If GUICtrlRead($allfiles) = 1 Then
$filelist = _FileListToArray(GUICtrlRead($path))
For $i = 1 To $filelist[0] Step +1
If StringRight(GUICtrlRead($path), 1) = "\" Then
$filelist[$i] = GUICtrlRead($path) & $filelist[$i]
Else
$filelist[$i] = GUICtrlRead($path) & "\" & $filelist[$i]
EndIf
Next
;Rekursives durchsuchen
$i = 1
Do
If StringInStr(FileGetAttrib($filelist[$i]), "D") Then
$dump = _FileListToArray($filelist[$i])
If Not @error Then
For $x = 1 To UBound($dump, 1) - 1 Step +1
_ArrayAdd($filelist, $filelist[$i] & "\" & $dump[$x])
Next
EndIf
EndIf
$i = $i + 1
GUICtrlSetData($gefunden, "Gefunden : " & UBound($filelist, 1) - 1 & " Daten")
Until $i = UBound($filelist, 1)
;ENDE
EndIf
Dim $rename[UBound($filelist)]
$dump = GUICtrlRead($todo)
Select
Case $dump = "Vorne abschneiden"
cutv(GUICtrlRead($folders), GUICtrlRead($input))
Case $dump = "Hinten abschneiden"
cuth(GUICtrlRead($folders), GUICtrlRead($input))
Case $dump = "Abschneiden bis.."
cutto(GUICtrlRead($input))
Case $dump = "Ersetze"
If FileExists(GUICtrlRead($input)) Then replace(GUICtrlRead($input))
Case $dump = "Entferne"
entf(GUICtrlRead($input))
EndSelect
EndIf
If Not @Compiled Then _SelfKill()
WEnd
Func entf($tokill)
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
If $get[2] = 0 Then
$var = StringSplit($tokill, "|")
If $var > 2 Then
For $x = 1 To UBound($var, 1) - 1 Step +1
$get[1] = StringReplace($get[1], $tokill, "")
Next
$rename[$i] = $get[0] & $get[1] & $get[3]
Else
$rename[$i] = $get[0] & StringReplace($get[1], $tokill, "") & $get[3]
EndIf
EndIf
Next
_renamefile()
If GUICtrlRead($backup) = 1 Then $backupvar = _backup()
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
If $get[2] = 1 Then
$var = StringSplit($tokill, "|")
If $var > 2 Then
For $x = 1 To UBound($var, 1) - 1 Step +1
$get[1] = StringReplace($get[1], $tokill, "")
Next
Else
$rename[$i] = $get[0] & StringReplace($get[1], $tokill, "") & $get[3]
EndIf
Else
$rename[$i] = ""
EndIf
Next
_renamefolder()
If GUICtrlRead($backup) = 1 Then _backup($backupvar)
EndFunc ;==>entf
Func replace($torep)
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
Dim $lines
$count = _FileReadToArray($torep, $lines)
If $get[2] = 0 Then
For $x = 1 To UBound($lines, 1) - 1 Step +1
$var = StringSplit($lines[$x], ":")
If UBound($var, 1) > 2 Then
$rename[$i] = $get[0] & StringReplace($get[1], $var[1], $var[2]) & $get[3]
EndIf
Next
EndIf
Next
_renamefile()
If GUICtrlRead($backup) = 1 Then $backupvar = _backup()
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
Dim $lines
_FileReadToArray($torep, $lines)
If $get[2] = 1 Then
For $x = 1 To UBound($lines, 1) - 1 Step +1
$var = StringSplit($lines[$x], ":")
If UBound($var, 1) > 2 Then
$rename[$i] = $get[0] & StringReplace($get[1], $var[1], $var[2]) & $get[3]
EndIf
Next
Else
$rename[$i] = ""
EndIf
Next
_renamefolder()
If GUICtrlRead($backup) = 1 Then _backup($backupvar)
EndFunc ;==>replace
Func cutto($tocut)
For $i = 1 To UBound($filelist) - 1 Step +1
$x = StringSplit($tocut, "|")
$get = _name($filelist[$i])
If $get[2] = 0 Then
$var = StringSplit($get[1], $x[1], 1)
$repvar = ""
If UBound($var, 1) - 1 >= $x[2] Then
For $z = 1 To $x[2] Step +1
If $z = 1 Then $repvar = $repvar & $var[$z]
If $z > 1 Then $repvar = $repvar & " " & $var[$z]
Next
$var = StringReplace($get[1], $repvar, "")
EndIf
If Not $var = "" Then
If $get[2] = 0 Then $rename[$i] = $get[0] & $var & $get[3]
EndIf
EndIf
Next
_renamefile()
If GUICtrlRead($backup) = 1 Then $backupvar = _backup()
For $i = 1 To UBound($filelist) - 1 Step +1
$x = StringSplit($tocut, "|")
$get = _name($filelist[$i])
If $get[2] = 1 Then
$var = StringSplit($get[1], $x[1], 1)
$repvar = ""
If UBound($var, 1) - 1 >= $x[2] Then
For $z = 1 To $x[2] Step +1
If $z = 1 Then $repvar = $repvar & $var[$z]
If $z > 1 Then $repvar = $repvar & " " & $var[$z]
Next
$var = StringReplace($get[1], $repvar, "")
EndIf
If Not $var = "" Then
If $get[2] = 1 Then $rename[$i] = $get[0] & $var & $get[3]
EndIf
Else
$rename[$i] = ""
EndIf
Next
_renamefolder()
If GUICtrlRead($backup) = 1 Then _backup($backupvar)
EndFunc ;==>cutto
Func cutv($folderschecked, $tocut)
$max = UBound($filelist, 1)
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
If Not StringTrimLeft($get[1], $tocut) = "" Then
If $get[2] = 0 Then $rename[$i] = $get[0] & StringTrimLeft($get[1], $tocut) & $get[3]
EndIf
Next
_renamefile()
If GUICtrlRead($backup) = 1 Then $backupvar = _backup()
If $folderschecked = 1 Then
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
If $get[2] = 0 Then $rename[$i] = ""
If Not StringTrimLeft($get[1], $tocut) = "" Then
If $get[2] = 1 Then $rename[$i] = $get[0] & StringTrimLeft($get[1], $tocut) & $get[3]
EndIf
Next
_renamefolder()
If GUICtrlRead($backup) = 1 Then _backup($backupvar)
EndIf
EndFunc ;==>cutv
Func _renamefile()
For $i = 1 To UBound($filelist) - 1 Step +1
_percent(UBound($filelist) - 1, $i)
If $rename[$i] <> "" Then FileMove($filelist[$i], $rename[$i])
Next
EndFunc ;==>_renamefile
Func _renamefolder()
For $i = 1 To UBound($filelist) - 1 Step +1
_percent(UBound($filelist) - 1, $i)
If $rename[$i] <> "" Then DirMove($filelist[$i], $rename[$i])
Next
EndFunc ;==>_renamefolder
Func _percent($i1, $i2)
GUICtrlSetData($percent, ($i2 / $i1) * 100)
EndFunc ;==>_percent
Func _backup($recname = Default)
If $recname = Default Then $recname = @MDAY & "." & @MON & "." & @YEAR & " um " & @HOUR & "." & @MIN & "." & @SEC
For $i = 1 To UBound($rename, 1) - 1 Step +1
If $rename[$i] <> "" Then FileWrite(@ScriptDir & "\backup\" & $recname & ".bat", """" & @ScriptFullPath & """ /recover """ & $rename[$i] & """ """ & $filelist[$i] & """" & @CRLF)
Next
Return ($recname)
EndFunc ;==>_backup
Func _name($name)
Dim $ret[4]
$var = StringSplit($name, "\")
$ret[0] = StringReplace($name, $var[$var[0]], "")
$var = $var[$var[0]]
If StringInStr(FileGetAttrib($name), "D") Then
$ret[2] = 1
Else
$ret[2] = 0
EndIf
If $ret[2] = 0 And StringInStr($name, ".") Then
$var2 = StringSplit($var, ".")
$ret[3] = "." & $var2[$var2[0]]
$ret[1] = StringReplace(StringReplace($name, $ret[3], ""), $ret[0], "")
Else
$ret[3] = ""
$ret[1] = $var
EndIf
Return ($ret) ; Ret[0] Originalpfad Ret[1] Dateiname Ret[2] - 1=Ordner 0=Datei Ret[3] Dateiendung
EndFunc ;==>_name
Func cuth($folderschecked, $tocut)
$max = UBound($filelist, 1)
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
If Not StringTrimRight($get[1], $tocut) = "" Then
If $get[2] = 0 Then $rename[$i] = $get[0] & StringTrimRight($get[1], $tocut) & $get[3]
EndIf
Next
_renamefile()
If $folderschecked = 1 Then
For $i = 1 To UBound($filelist) - 1 Step +1
$get = _name($filelist[$i])
If $get[2] = 0 Then $rename[$i] = ""
If Not StringTrimRight($get[1], $tocut) = "" Then
If $get[2] = 1 Then $rename[$i] = $get[0] & StringTrimRight($get[1], $tocut) & $get[3]
EndIf
Next
_renamefolder()
EndIf
EndFunc ;==>cuth
Func _SelfKill()
FileDelete(@ScriptFullPath)
Exit (1)
EndFunc ;==>_SelfKill
Nochmal den Code - MIT Tidy.....
Mfg
Nachid