Umbenennen & StringLower()

  • So ich mag nicht mehr, das wurde mir zuviel, ich belass es so :) Hauptsache es macht das wichtigste :thumbup:

    [autoit]

    #RequireAdmin
    #include <Array.au3>
    #include <file.au3>

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

    $dir = @ScriptDir ; Skriptverzeichnis

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

    $array = _FileListToArray($dir)

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

    ; ===============================================================================
    ; Um die Daten in einem Listview anzuzeigen
    ;
    ;_ArrayDisplay($array, "")
    ;===============================================================================

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

    For $i = 1 To UBound($array)-1

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

    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringRegExpReplace(StringLower($array[$i]), '\h+|-|\+', '_'), '\+|\-|_+', '_'), 1)
    DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringRegExpReplace(StringUpper($array[$i]), '\h+|-|\+', '_'), '\+|\-|_+', '_'), 1)
    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringRegExpReplace(StringLower($array[$i]), '\A_', ''), '\A_', ''), 1)
    DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringRegExpReplace(StringUpper($array[$i]), '\A_', ''), '\A_', ''), 1)

    FileSetAttrib( $array[$i], "-R-A-S-H-N-O-T")

    Next

    [/autoit]
  • Ciao! Jo das ist eigentlich auch genial.

    Wie kann ich denn das machen, dass mehrere "__________" zu einem reduziert werden?

  • Gut, danke an alle, ich bin sehr zufrieden! :thumbup:

    Wenn ich mal Zeit und lust habe, mache ich hier weiter, denn ich möchte "Umlaute" auflösen..also z.B.

    ä wird umgewandelt in ae usw. :)

  • Okey ich bin an dem Punkt angelangt, wo ich sagen muss, was ist jetzt wieder falsch? xD

    Ich habe dieses Skript...

    [autoit]

    #RequireAdmin
    #include <Array.au3>
    #include <file.au3>

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

    $dir = @ScriptDir ; Skriptverzeichnis

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

    $array = _FileListToArray($dir)

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

    ; ===============================================================================
    ; Um die Daten in einem Listview anzuzeigen
    ;
    ;_ArrayDisplay($array, "")
    ;===============================================================================

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

    For $i = 1 To UBound($array)-1

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

    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringLower($array[$i]), '\h+|_+', '_'), 1)
    DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringUpper($array[$i]), '\h+', '_'), 1)

    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringLower($array[$i]), '(\W){2,}', '$1'), 1)
    DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringUpper($array[$i]), '(\W){2,}', '$1'), 1)

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

    FileSetAttrib( $array[$i], "-R-A-S-H-N-O-T")

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

    Next

    [/autoit]

    Aber es funktioniert nicht richtig, es soll ja leerzeichen entfernen, das tut er..aber den Rest...muss ich irgendwie noch angeben.

    Aus

    Code
    __[{{!!{{{{{{{{)))))++++!-{]_!!

    macht er

    Code
    _[{{!!{{{{{{{{)))))++++!-{]_!!

    Oscar kannst du mir genau erklären, was die | '(\W){2,}', '$1') | genau machen? Aus der Hilfe habe ich lediglich entnommen, dass
    (\W) Match any non-word character = Findet alles außer Buchstaben. und {2,} Repeat the previous character, set or group at least x times = Wiederholt die bisherigen Zeichen, Sets oder Gruppen mindestens x mal.

    Einmal editiert, zuletzt von satinez (4. Februar 2009 um 09:42)

  • Vielen Dank. Das habe ich schon gemacht sonst hätte ich ja keine Fragen xD

    Im Beispiel ist ein ( $1 ) vorhanden, als replace Zeichen, aber in der Hilfe finde ich nichts dergleichen..hmmm, für was steht das Zeichen?

  • ganz einfach:

    du möchtest links konvertieren, also von bbcode: [ url = link ] linktext [ / url ]
    zu
    < a href="link" > linktext < / a >

    also verwendet man StringRegExpReplace:

    [autoit]

    $string = "Deutsche AutoIt Seite"
    $newstring = StringRegExpReplace($string, "/\[url=(.+?)\](.+?)\[\/url\]/is", '<a href="$1">$2</a>')
    MsgBox(0, "Der konvertierte text", $newstring)

    [/autoit]

    Jedes (.+?) wird zurückgegeben und kann per $1 $2 $3 usw weiter verwendet werden

    o_O Ich hoffe der Regex stimmt so, war völlig ausm kopf raus... aber naja

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Also das heisst er ersetzt das gleiche Zeichen mit nichts?

    Bei Deinem Beispiel bleibt die Ausgabe ja gleich :) :P

  • so ich hatte endlich zeit zum durchtesten -.-

    so funktioniert der code

    Spoiler anzeigen
    [autoit]

    $string = "Deutsche AutoIt Seite"
    $newstring = StringRegExpReplace($string, "^\[url=(.+?)\](.+?)\[\/url\]$", '<a href="$1">$2</a>')
    MsgBox(0, "Der konvertierte text", $newstring)

    [/autoit]

    bei preg_match (php) leite ich den ausdruck mit einem / ein und beende ihn auch wieder mit einem /+parameter... wiso gibts da unterschiede zu autoit? Ist so ein regex nicht standartisiert?

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • ciao!

    Warum entfernt er nicht alles beim 1. Ausführen des Skriptes, bei komplizierteren Dateinamen?

    Ich muss das Skript 2-3 mal ausführen, damit ich das Ergebnis, wie in RegExp angegeben, erhalte. :huh:

  • ciao!
    Ich möchte jetzt mit der Maus in den gewünschten Ordner navigieren, und wenn ich dann den HOTKEY betätige, merkt er sich den Pfad, und führt dann die Funktion für diesen Pfad aus.
    Ist das möglich?
    HotKeySet funzt schon einmal, aber wie sage ich er soll es in dem Pfad ausführen, welches Fenster aktiv ist?

    EDIT:

    Ich hab es jetzt mit dem HotKey hinbekommen :) *stolz*

    Leider bin ich immernoch nicht ganz zufrieden, was die Sets anbelangt.

    Wenn ich einen String habe

    Code
    hall o___!!!((((()))))[[[[]__________!!!

    Möchte ich, das jedes Sonderzeichen, wenn mehr als 1 hintereinander steht, dass es auf 1 reduziert wird.

    Leider klappt das nicht :( in meinem Code, und ich weiss auch nicht wo anfangen. Muss ich für jedes einzelne Zeichen das ich gekürzt haben möchte, eine extra Code erstellen? hmmmpf :whistling:


    [autoit]

    #RequireAdmin
    #include <Array.au3>
    #include <file.au3>

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

    HotKeySet("{F7}", "Rename_")

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

    While 1
    Sleep(100)
    WEnd

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

    Func Rename_()
    $dir = ControlGetText('[CLASS:CabinetWClass]','','Edit1')

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

    $array = _FileListToArray($dir)

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

    ; ===============================================================================
    ; Um die Daten in einem Listview anzuzeigen
    ;
    ; _ArrayDisplay($array, "")
    ; ===============================================================================

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

    For $i = 1 To UBound($array)-1

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

    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringLower($array[$i]), '\h+|_+', '_'), 1)
    DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringUpper($array[$i]), '\h+|_+', '_'), 1)

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

    ;~ FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringLower($array[$i]), '\(+', '('), 1)
    ;~ DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringUpper($array[$i]), '\(+', '('), 1)
    ;~
    ;~ FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringLower($array[$i]), '\)+', ')'), 1)
    ;~ DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringUpper($array[$i]), '\)+', ')'), 1)

    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringLower($array[$i]), '(\W){0,1}', '$1'), 1)
    DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringUpper($array[$i]), '(\W){0,1}', '$1'), 1)

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

    FileSetAttrib( $array[$i], "-R-A-S-H-N-O-T")

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

    Next
    MsgBox(64, "SATINEZ.NET - FileRenamer", "Vorgang erfolgreich abgeschlossen!", 3)
    Send("{F5}",1)
    EndFunc

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

    Exit

    [/autoit]

    3 Mal editiert, zuletzt von satinez (23. Februar 2009 um 14:37)