name_change:
Ist ein Commandline tool, welches dazu verwendet wird ganze Ordner verzeichnise und deren Inhalt namentlich zu verändern: also aus z.b.: HAllo Welt.cpp wird dann hallo_welt.cpp
Ich habe das Programm auf Wunsch von einem Klassenkammeraden geschrieben, da er seine Externe Festplatte dem Syntax Muster anpassen wollte und nicht alles manuell machen wollte.
Syntax:
-p Pfad -> Setzt den zu bearbeitenden Pfad
-s "zu suchendes zeichen" -> Sucht im in Dateinamen ausgesuchtes Zeichen (ggf. teile [nicht getestet])
-r "zu ersetzenden zeichen" -> Ersetzt das "zu suchende Zeichen" durch das "zu ersetzende zeichen" Im DATEINAMEN
-ps "zu suchendes zeichen" -> Sucht im in PFAD ausgesuchtes Zeichen (ggf. teile [nicht getestet])
-pr "zu ersetzenden zeichen" -> Ersetzt das "zu suchende Zeichen" durch das "zu ersetzende zeichen" Im PFAD
-aou -> ersetzt umlaute in datei und verzeichnisnamen
-h oder -help -> Gibt die hilfe aus (leicht doof geschrieben)
-r replace 'zeichen' z.B. '_'
-s search 'zeichen' z.B. ' '
-pr pfadreplace 'zeichen' z.B. '.'
-ps pfadsearch 'zeichen' z.B. ' '
-p pfad 'pfad' z.B. 'C:\beispiel'
-recu Recusiv einlesen
-aou ersetzt Umlaute durch ae,oe,ue,ss,und
name_change.exe-p 'C:\beispiel' -pr '.' -ps ' ' -r '_' -s ' '
Bedeutet Sie ersetzen im Pfad alle Leerzeichen durch . (Punkt)
Und Sie ersetzen im Dateinamen alle Leerzeichen durch _ (Unterstrich)
als Default für -s und -ps sind " " (leerzeichen)
als Default für -r und -pr sind "_" (unterstriche)
gesetzt.
Die Reihenfolge der Parameter ist egal! Sprich es geht sowohl:
programm.exe -p "X:\abc\123" -s "_" -r " "
also auch:
programm.exe -s "_" -r " " -p "X:\abc\123"
NUR wenn -h bzw -help verwendet wird, werden alle anderen Parameter Ignoriert!
Spoiler anzeigen
#include <_RecursiveFileListToArray.au3>
#include <string.au3>
#include <array.au3>
#include <file.au3>
#NoTrayIcon
;Opt("MustDeclareVars", 1)
Global $charrep, $charsec, $cmdpfad, $charsecpf, $charreppf, $aeouue = False, $recu = False
If $CmdLine[0] <= 0 Then _errot()
;MsgBox("","",UBound($CmdLine))
For $e = UBound($CmdLine) - 1 To 1 Step -1
If $CmdLine[$e] == "-h" Or $CmdLine[$e] == "-help" Then
ConsoleWrite(@CRLF & "Benutzen sie folgende Syntax:")
ConsoleWrite(@CRLF & @ScriptName & "-p 'C:\beispiel' -r '_'")
ConsoleWrite(@CRLF & @CRLF & "-rreplace 'zeichen' z.B. '_'")
ConsoleWrite(@CRLF & "-ssearch 'zeichen' z.B. ' '")
ConsoleWrite(@CRLF & "-prpfadreplace 'zeichen' z.B. '.'")
ConsoleWrite(@CRLF & "-pspfadsearch 'zeichen' z.B. ' '")
ConsoleWrite(@CRLF & "-ppfad 'pfad' z.B. 'C:\beispiel'")
ConsoleWrite(@CRLF & "-recuRecusiv einlesen")
ConsoleWrite(@CRLF & "-aouersetzt Umlaute durch ae,oe,ue,ss,und")
ConsoleWrite(@CRLF & @CRLF & @ScriptName & "-p 'C:\beispiel' -pr '.' -ps ' ' -r '_' -s ' '")
ConsoleWrite(@CRLF & "Bedeutet Sie ersetzen im Pfad alle Leerzeichen durch . (Punkt)")
ConsoleWrite(@CRLF & "Und Sie ersetzen im Dateinamen alle Leerzeichen durch _ (Unterstrich)")
ConsoleWrite(@CRLF & @CRLF)
Exit
Exit
EndIf
Next
For $e = UBound($CmdLine) - 1 To 1 Step -1
If $CmdLine[$e] == "-r" Then
If $CmdLine[$e + 1] <> "-s" And $CmdLine[$e + 1] <> "-p" And $CmdLine[$e + 1] <> "-pr" And $CmdLine[$e + 1] <> "-ps" And $CmdLine[$e + 1] <> "-aou" And $CmdLine[$e + 1] <> "-recu" Then $charrep = $CmdLine[$e + 1]
EndIf
If $CmdLine[$e] == "-s" Then
If $CmdLine[$e + 1] <> "-r" And $CmdLine[$e + 1] <> "-p" And $CmdLine[$e + 1] <> "-pr" And $CmdLine[$e + 1] <> "-ps" And $CmdLine[$e + 1] <> "-aou" And $CmdLine[$e + 1] <> "-recu" Then $charsec = $CmdLine[$e + 1]
EndIf
If $CmdLine[$e] == "-p" Then
If $CmdLine[$e + 1] <> "-s" And $CmdLine[$e + 1] <> "-r" And $CmdLine[$e + 1] <> "-pr" And $CmdLine[$e + 1] <> "-ps" And $CmdLine[$e + 1] <> "-aou" And $CmdLine[$e + 1] <> "-recu" Then $cmdpfad = $CmdLine[$e + 1]
EndIf
If $CmdLine[$e] == "-pr" Then
If $CmdLine[$e + 1] <> "-s" And $CmdLine[$e + 1] <> "-r" And $CmdLine[$e + 1] <> "-p" And $CmdLine[$e + 1] <> "-ps" And $CmdLine[$e + 1] <> "-aou" And $CmdLine[$e + 1] <> "-recu" Then $charreppf = $CmdLine[$e + 1]
EndIf
If $CmdLine[$e] == "-ps" Then
If $CmdLine[$e + 1] <> "-s" And $CmdLine[$e + 1] <> "-r" And $CmdLine[$e + 1] <> "-pr" And $CmdLine[$e + 1] <> "-p" And $CmdLine[$e + 1] <> "-aou" And $CmdLine[$e + 1] <> "-recu" Then $charsecpf = $CmdLine[$e + 1]
EndIf
If $CmdLine[$e] == "-recu" Then
If $CmdLine[$e + 1] <> "-s" And $CmdLine[$e + 1] <> "-p" And $CmdLine[$e + 1] <> "-pr" And $CmdLine[$e + 1] <> "-ps" And $CmdLine[$e + 1] <> "-aou" And $CmdLine[$e + 1] <> "-r" Then
If $CmdLine[$e + 1] == 1 Or $CmdLine[$e + 1] = "true" Then $recu = 1
If $CmdLine[$e + 1] == 0 Or $CmdLine[$e + 1] = "false" Then $recu = 0
EndIf
EndIf
If $CmdLine[$e] == "-aou" Then
If $CmdLine[$e + 1] <> "-s" And $CmdLine[$e + 1] <> "-r" And $CmdLine[$e + 1] <> "-pr" And $CmdLine[$e + 1] <> "-p" And $CmdLine[$e + 1] <> "-ps" And $CmdLine[$e + 1] <> "-recu" Then
If $CmdLine[$e + 1] == 1 Or $CmdLine[$e + 1] = "true" Then $aeouue = True
If $CmdLine[$e + 1] == 0 Or $CmdLine[$e + 1] = "false" Then $aeouue = False
EndIf
EndIf
;And $CmdLine[$e + 1] <> "-recu"
;msgbox("","",$CmdLine[$e] & @LF & $cmdpfad & @LF & $charsec & @LF & $charrep)And $CmdLine[$e + 1] <> "-aou"
Next
If $charrep == "" Then $charrep = "_"
If $charsec == "" Then $charsec = " "
If $charreppf == "" Then $charreppf = "_"
If $charsecpf == "" Then $charsecpf = " "
If $cmdpfad == "" Then ConsoleWrite(@CRLF & @CRLF & "Es wurde kein Pfad angegeben! Tippen sie " & @ScriptName & " -h oder -help ein um Hilfe zu bekommen")
If $cmdpfad <> "" And FileExists($cmdpfad) Then
[/autoit] [autoit][/autoit] [autoit];ConsoleWrite("Benenne "& $arvz[$e] & $arda[$i] & " >> " & $arvz[$e] & StringUpper($arda[$i]))
[/autoit] [autoit][/autoit] [autoit]Global $ardae, $movedatei, $ardateiendungkurzel = "", $ardateiendung, $movecangename, $movepfad, $movepfadname, $movepfadcangename, $movevorpfad, $aktuellerOrdner, $moveOrdnernamechange, $no_other_pfad
Global $arvz = _RecursiveFileListToArray($cmdpfad, 2, 1, $recu)
Global $arda = _RecursiveFileListToArray($cmdpfad, 1, 1, $recu)
Global $File = FileOpen("C:\Name_Change.log", 9)
;_ArrayDisplay($arvz)
;for $e = 1 to UBound($arvz)-1 step + 1
For $i = 1 To UBound($arda) - 1 Step +1
$ardae = StringSplit($arda[$i], "\")
$movedatei = $ardae[UBound($ardae) - 1]
$ardateiendung = StringSplit($movedatei, ".", 2)
If UBound($ardateiendung) > 1 Then
$ardateiendungkurzel = "." & $ardateiendung[UBound($ardateiendung) - 1]
$movedatei = StringReplace($movedatei, $ardateiendungkurzel, "")
EndIf
;MsgBox("","",UBound($ardateiendung) & @LF & $ardateiendungkurzel& @LF & $movedatei)
$movecangename = StringLower($movedatei)
;MsgBox("","",$movecangename & @LF & StringRegExpReplace($movecangename,$charsec,$charrep) & @lf & StringReplace($movecangename,$charsec,$charrep))
;$movecangename = StringRegExpReplace($movecangename,$charsec,$charrep)
$movecangename = StringReplace($movecangename, $charsec, $charrep)
If $aeouue = True Then
$movecangename = StringReplace($movecangename, "ü", "ue")
$movecangename = StringReplace($movecangename, "ö", "oe")
$movecangename = StringReplace($movecangename, "ä", "ae")
$movecangename = StringReplace($movecangename, "ß", "ss")
$movecangename = StringReplace($movecangename, "&", "und")
EndIf
$movepfad = StringReplace($arda[$i], $ardae[UBound($ardae) - 1], "")
[/autoit] [autoit][/autoit] [autoit];MsgBox("","",$movepfad & $movedatei & @lf & $movepfad & $movecangename)
ConsoleWrite(@CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $movedatei & $ardateiendungkurzel & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $movecangename & $ardateiendungkurzel)
FileWrite($File, @CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $movedatei & $ardateiendungkurzel & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $movecangename & $ardateiendungkurzel)
FileMove($movepfad & $movedatei & $ardateiendungkurzel, $movepfad & $movecangename & $ardateiendungkurzel, 1)
;DirMove($movevorpfad & $movepfadname, $movevorpfad & $movepfadcangename,1)
;Next
Next
If $recu = 0 Then
$no_other_pfad = True
Else
$no_other_pfad = False
EndIf
If $no_other_pfad = False Then
If $recu == 1 Then
For $i = UBound($arvz) - 1 To 1 Step -1
$ardae = StringSplit($arvz[$i], "\")
;_ArrayDisplay($ardae)
$aktuellerOrdner = $ardae[UBound($ardae) - 2]
$moveOrdnernamechange = StringLower($aktuellerOrdner)
;$moveOrdnernamechange = StringRegExpReplace($moveOrdnernamechange, $charsecpf, $charreppf)
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, $charsecpf, $charreppf)
;$moveOrdnernamechange = StringRegExpReplace($moveOrdnernamechange,"ü","ue")
If $aeouue = True Then
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ü", "ue")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ö", "oe")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ä", "ae")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ß", "ss")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "&", "und")
EndIf
;$movepfad = StringRegExpReplace($arvz[$i],$aktuellerOrdner & "\","",2)
$movepfad = StringReplace($arvz[$i], $aktuellerOrdner & "\", "")
;MsgBox("","",$movepfad & $aktuellerOrdner &@lf& $movepfad & $moveOrdnernamechange)
ConsoleWrite(@CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $aktuellerOrdner & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $moveOrdnernamechange)
FileWrite($File, @CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $aktuellerOrdner & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $moveOrdnernamechange)
DirMove($movepfad & $aktuellerOrdner, $movepfad & $moveOrdnernamechange, 1)
[/autoit] [autoit][/autoit] [autoit]Next
EndIf
$ardae = StringSplit($arvz[1], "\")
;_ArrayDisplay($ardae)
$aktuellerOrdner = $ardae[UBound($ardae) - 3]
;MsgBox("","",$aktuellerOrdner)
$moveOrdnernamechange = StringLower($aktuellerOrdner)
;$moveOrdnernamechange = StringRegExpReplace($moveOrdnernamechange, $charsecpf, $charreppf)
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, $charsecpf, $charreppf)
If $aeouue = True Then
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ü", "ue")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ö", "oe")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ä", "ae")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ß", "ss")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "&", "und")
EndIf
;$moveOrdnernamechange = StringRegExpReplace($moveOrdnernamechange,"ü","ue")
;$movepfad = StringRegExpReplace($arvz[$i],$aktuellerOrdner & "\","",2)
$movepfad = StringReplace($arvz[1], $aktuellerOrdner & "\" & $ardae[UBound($ardae) - 2] & "\", "")
;MsgBox("","",$movepfad )
;MsgBox("","",$movepfad & $aktuellerOrdner &@lf& $movepfad & $moveOrdnernamechange)
ConsoleWrite(@CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $aktuellerOrdner & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $moveOrdnernamechange & @CRLF & @CRLF & "Vielen Dank, dass Sie das Programm Benutzen!" & @CRLF & "Und an ELiTE durch dessen Wunsch dies Programm" & @CRLF & "entstanden ist" & @CRLF & @CRLF & "BuFF" & @CRLF & @CRLF)
FileWrite($File, @CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $aktuellerOrdner & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $moveOrdnernamechange & @CRLF & @CRLF & "Vielen Dank, dass Sie das Programm Benutzen!" & @CRLF & "Und an ELiTE durch dessen Wunsch dies Programm" & @CRLF & "entstanden ist" & @CRLF & @CRLF & "BuFF" & @CRLF & @CRLF)
DirMove($movepfad & $aktuellerOrdner, $movepfad & $moveOrdnernamechange, 1)
FileClose($File)
Exit
Else
$ardae = StringSplit($cmdpfad, "\")
;msgbox("","",$cmdpfad)
$aktuellerOrdner = $ardae[UBound($ardae) - 1]
;MsgBox("","",$aktuellerOrdner)
$moveOrdnernamechange = StringLower($aktuellerOrdner)
;$moveOrdnernamechange = StringRegExpReplace($moveOrdnernamechange, $charsecpf, $charreppf)
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, $charsecpf, $charreppf)
If $aeouue = True Then
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ü", "ue")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ö", "oe")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ä", "ae")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "ß", "ss")
$moveOrdnernamechange = StringReplace($moveOrdnernamechange, "&", "und")
EndIf
;$moveOrdnernamechange = StringRegExpReplace($moveOrdnernamechange,"ü","ue")
;MsgBox("","",$moveOrdnernamechange)
;$movepfad = StringRegExpReplace($arvz[$i],$aktuellerOrdner & "\","",2)
$movepfad = StringReplace($cmdpfad, $aktuellerOrdner, "")
DirMove($movepfad & $aktuellerOrdner, $movepfad & $moveOrdnernamechange, 1)
ConsoleWrite(@CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $aktuellerOrdner & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $moveOrdnernamechange & @CRLF & @CRLF & "Vielen Dank, dass Sie das Programm Benutzen!" & @CRLF & "Und an ELiTE durch dessen Wunsch dies Programm" & @CRLF & "entstanden ist" & @CRLF & @CRLF & "BuFF" & @CRLF & @CRLF)
FileWrite($File, @CRLF & @CRLF & "Benenne " & @CRLF & $movepfad & $aktuellerOrdner & @CRLF & " >> Zu >> " & @CRLF & $movepfad & $moveOrdnernamechange & @CRLF & @CRLF & "Vielen Dank, dass Sie das Programm Benutzen!" & @CRLF & "Und an ELiTE durch dessen Wunsch dies Programm" & @CRLF & "entstanden ist" & @CRLF & @CRLF & "BuFF" & @CRLF & @CRLF)
;MsgBox("","",$movepfad & $aktuellerOrdner &@lf& $movepfad & $moveOrdnernamechange)
FileClose($File)
Exit
EndIf
Else
ConsoleWrite(@CRLF & @CRLF & "Pfad existiert nicht (mehr)!" & @CRLF & @CRLF)
ConsoleWrite(@CRLF & @CRLF & "Syntax: Programmname Pfad" & @CRLF & @CRLF & "Z.B. C:\" & @ScriptName & " -p C:\User\xyz\Bilder " & @CRLF & @CRLF & "Geben sie C:\" & @ScriptName & " -h ein um Hilfe zu erhalten")
Exit
EndIf
Func _errot()
ConsoleWrite(@CRLF & @CRLF & "Fehler Zu wenig Parameter!" & @CRLF & @CRLF)
ConsoleWrite(@CRLF & @CRLF & "Syntax: Programmname Pfad" & @CRLF & @CRLF & "Z.B. C:\" & @ScriptName & " -p C:\User\xyz\Bilder " & @CRLF & @CRLF & "Geben sie C:\" & @ScriptName & " -h ein um Hilfe zu erhalten")
Exit
EndFunc ;==>_errot