Umbenennen & StringLower()

  • Spoiler anzeigen
    [autoit]

    #include <file.au3>

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

    $dir = FileSelectFolder("", "C:\")

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

    $array = _FileListToArray($dir)

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

    For $i = 1 To UBound($array)-1
    FileMove($dir&"\"&$array[$i], $dir&"\"&StringLower($array[$i]), 1)
    Next

    [/autoit]

    um leerzeichen zu entfernen stringreplace benutzen

    MFG FireFlyer

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

  • Danke für di rasche Antwort. Soweit funktioniert es :)

    Doch mit dem StringReplace will er nicht so richtig..was mache ich falsch?

    [autoit]


    #RequireAdmin
    #include <file.au3>

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

    $dir = "."

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

    $array = _FileListToArray($dir)

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

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

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

    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringLower($array[$i]) & StringReplace( $array[$i], " ", "_") , 1)

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

    Next

    [/autoit]

    Einmal editiert, zuletzt von satinez (1. Februar 2009 um 03:34)

  • Spoiler anzeigen
    [autoit]

    #include <file.au3>

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

    ;$dir = FileSelectFolder("", "z:\")
    $dir = "."

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

    $array = _FileListToArray($dir)

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

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


    FileMove( $dir & "\" & $array[$i], $dir & "\" & StringReplace(StringLower($array[$i]), " ", "_") , 1)
    ;~ DirMove($dir&"\"&$array[$i], $dir&"\"&StringLower($array[$i]), 1)
    Next

    [/autoit]

    MFG FireFlyer

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

  • Ouuups so eine Kleinigkeit :( danke!!

    Ich habe jetzt noch eine Frage wie kann ich das lösen..

    Wenn der Datei name "1 2 A" ist, werden die Leerzeichen ja mit einem "_" ersetzt.

    Kann ich festlegen, WENN ein oder mehrere Leerzeichen hinter oder vor einem Leerzeichen sind, dass er immer auf ein "_" reduzieren soll?

    Einmal editiert, zuletzt von satinez (1. Februar 2009 um 03:38)

  • Vielen Dank, es wird immer interessanter :D

    Habe was probiert, doch irgendwie macht er das nicht wie ich will..

    [autoit]

    $string = 'b la___+++BBB+Bbl--a- b la---____ _ bla.jpg'

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

    $string = StringRegExpReplace(StringUpper($string), '_+|\h+' , '_')

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

    MsgBox(0, 0, $string)

    [/autoit]


    Kann ich ein eigenes Set basteln, für StringRegExpReplace ?
    Ich möchte z.B. das die "+","-" zu einem "_" werden, aber das die Regel (auf ein "_" reduzieren noch greift)

    Ich verstehe noch nicht wie StringRegExpReplace arbeitet, ich habe zwar die Hilfedatei durchgelesen aber
    ich denke das wird was komplizierter mit den verschiedenen Klammern und so.

    3 Mal editiert, zuletzt von satinez (1. Februar 2009 um 13:58)

  • Hab ich auch nicht auf Anhieb verstanden...

    [autoit]

    $string = StringRegExpReplace(StringRegExpReplace(StringUpper($string), '_+|\h+' , '_'),'\+|\-','_')

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Das funzt, aber er soll die doppelten "_" auf Ein (Underscore) reduzieren.

    Ich habe es zwar hinbekommen, aber ich denke der eine oder andere würde mich hauen wollen :D

    [autoit]


    $string = StringRegExpReplace(StringUpper($string), '\h+|-|\+' , '_')
    $string = StringRegExpReplace(StringUpper($string), '_+' , '_')

    [/autoit]
  • Ja einverstanden, es funzt, hab mich nur doof angestellt, habs jetzt in einer Zeile gemacht, wie in deinem Beispiel.

    FirePanther: jo es sollen mehrere zu einem werden :)

    Das bisherige 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(StringRegExpReplace(StringLower($array[$i]), '\h+|-|\+' , '_'),'\+|\-|_+','_') , 1)
    DirMove( $dir & "\" & $array[$i], $dir & "\" & StringRegExpReplace(StringRegExpReplace(StringUpper($array[$i]), '\h+|-|\+' , '_'),'\+|\-|_+','_') , 1)

    FileSetAttrib( $array[$i], "-RASHNOT")

    Next

    [/autoit]

    Ich möchte jetzt noch das die Klammern "(" "[" "{" , "}" "]" ")" im gleichen Verfahren abgearbeitet werden, da wiederum, will er die klammern nicht nehmen.

  • hmmm jo da ist das Problem...:(

    Wenn ich ein File habe das "hallo[25].txt" heisst, entfernt er mir alle Klammern :(

    Ich will irgendwie sagen, WENN es nicht mehr als 1 ist DANN so belassen.
    Also er soll nur was machen wenn die Datei so heisst "hallo[[33]].txt

  • Hmmm aber wie kann ich dem Befehl sagen, er soll Dies und Das mit dem Replacen auf einer zeile?

    Oder muss ich mehrere Replaces machen?

  • Du kannst die Replaces natürlich verschachteln, z.B.:
    $String=StringRegExpReplace(StringRegExpReplace($String,"\]{1,}", "") ,"\[{1,}", "")

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Okey. Also ich merke es ist nicht gerade leicht mit diesen RegExpReplace :)

    Ich möchte eigentlich, dass wenn es mehr als ein Zeichen des selben typs neben einem gleichen vorhanden ist, dann soll er auf 1 reduzieren.

    [autoit]

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

    [/autoit]

    So klappt es...

    3 Mal editiert, zuletzt von satinez (1. Februar 2009 um 21:41)

  • [autoit]

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

    [/autoit]


    Damit müsste er aus "ndsflnld[[[sdf[sdf" "ndsflnld[sdf[sdf" machen.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.