name_change (ACHTUNG!)

  • 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
    [autoit]

    #include <_RecursiveFileListToArray.au3>
    #include <string.au3>
    #include <array.au3>
    #include <file.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #NoTrayIcon
    ;Opt("MustDeclareVars", 1)
    Global $charrep, $charsec, $cmdpfad, $charsecpf, $charreppf, $aeouue = False, $recu = False

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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"

    [/autoit] [autoit][/autoit] [autoit]

    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")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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)

    [/autoit] [autoit][/autoit] [autoit]

    ;Next
    Next
    If $recu = 0 Then
    $no_other_pfad = True
    Else
    $no_other_pfad = False
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    If $no_other_pfad = False Then
    If $recu == 1 Then
    For $i = UBound($arvz) - 1 To 1 Step -1

    [/autoit] [autoit][/autoit] [autoit]

    $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 & "\", "")

    [/autoit] [autoit][/autoit] [autoit]

    ;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)

    [/autoit] [autoit][/autoit] [autoit]

    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 )

    [/autoit] [autoit][/autoit] [autoit]

    ;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)

    [/autoit] [autoit][/autoit] [autoit]

    DirMove($movepfad & $aktuellerOrdner, $movepfad & $moveOrdnernamechange, 1)
    FileClose($File)

    [/autoit] [autoit][/autoit] [autoit]

    Exit
    Else
    $ardae = StringSplit($cmdpfad, "\")
    ;msgbox("","",$cmdpfad)
    $aktuellerOrdner = $ardae[UBound($ardae) - 1]

    [/autoit] [autoit][/autoit] [autoit]

    ;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, "")

    [/autoit] [autoit][/autoit] [autoit]

    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)

    [/autoit] [autoit][/autoit] [autoit]

    ;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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit]
  • Darter mit Script ist es sicherer, ich vertrau ihmja schon aber Viren (Sry BuFF nicht Privat nehmen) verlahmen meinen x1.9 GB RAM noch mehr.
    Danke fürs Anhängen, vielleicht noch Spoiler reinsetzen dann isses fürs Auge bequemer ^^
    achja, da ich an einem Mobilgerät bin / war konnte ich ne .exe schlecht lesen

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • oh :o okay gut zu wissen!
    aber nein ich persöhnlich will nichts mit viren zu tun haben, um ehrlich zu sein,
    kann ich mich nicht al errinern mir überhaupt einen eingefangen zu haben da ich recht
    sorgsam mit daten von anderen umgehe bzw nur vertrauenswürdigen personen daten akzeptiere.

    aber okay wenn das so ist dann denk ich ab jetzt immer dran ;)

  • ich will jetzt auch nicht großartig schimpfen, so sollte das nicht rüberkommen, nur finden es viele besser wenn der SRC bei "neueren" gleich reingeschrieben wird.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Ich verstehe nicht ganz was das jetzt soll - Mattthias, wenn dir jemand einen Virus schicken will, dann würde er dir jeden beliebigen Quellcode zeigen und sicher nicht den, den du erwartest. Wenn man sich, wie du sagtest, beim Extrahieren einen Virus holt, was bringt es dir, wenn du irgendeinen Quellcode siehst? Das ganze ist nicht schlüssig.
    Es brngt dir nur etwas, wenn du das Script aus dem Forum kopierst und es in Scite einfügst - dann wirst du aber nie Programme mit Bildern etc. testen können - und wozu hat's Virenscanner?

    So, und jetzt zum Script:
    Das Script ist wirklich gut gelugen, ich wüsste keine Verbesserungsvorschläge - nur eine genaure Beschreibung, wie es zu benutzen ist, wäre nicht schlecht ;)

  • Zitat

    Das Script ist wirklich gut gelugen, ich wüsste keine Verbesserungsvorschläge - nur eine genaure Beschreibung, wie es zu benutzen ist, wäre nicht schlecht ;)

    Ich werde mich drüm kümmern ;)
    Schreiben also etwas beschreiben ist nicht so meine Stärke :D
    wie man vielleicht auch bei meinen anderen Werken erkennen kann :p