In unterordnern nach datein suchen + auswählen und umbenennen

  • hi ihr :)

    ich nerv mal wieder ein bisschen:)

    hab ma wieder ein problem :( und zwar, ich will ein programm schreiben welches datein mit *.sg1 auflistet... diese möchte ich dann einzeln auswählen können und auf knopfdruck die ausgewähleten in *. sg2 umbenennen... diese sollen dann wiederum in einem anderen fenster aufgelistet werden... hier möchte ich sie auch auswählen können und dan auf knopfdruck in *.sg1 umbenennen... hört sich kompliziert an daher hier mal der gui... damit ises glaub ich zu versteen was ich will^^

    achso... alle *.sg1 datein sollen im linken fenster angezeigt werden und die *.sg2 datein im rechten fenster

    [autoit]


    #include <GUIConstants.au3>
    #include <File.au3>

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

    $Form1 = GUICreate("Dateinfinder", 316, 289, 269, 154)
    GUICtrlSetState(-1,$GUI_SHOW)
    $List1 = GUICtrlCreateList("", 5, 30, 129, 216)
    $List2 = GUICtrlCreateList("", 175, 30, 129, 216)
    $Button5 = GUICtrlCreateButton(">", 138, 93, 34, 34, 0)
    GUICtrlSetFont(-1, 16, 800, 0)
    $Button6 = GUICtrlCreateButton("<", 138, 143, 34, 34, 0)
    GUICtrlSetFont(-1, 16, 800, 0)
    $Button7 = GUICtrlCreateButton("Hilfe", 62, 250, 75, 25, 0)
    $Button8 = GUICtrlCreateButton("Beenden", 174, 250, 75, 25, 0)
    $Pfad = GUICtrlCreateLabel("D:\Dateifinder\Test\", 6, 5, 298, 18)
    GUISetState(@SW_SHOW)

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

    ; Shows the filenames of all files in the current directory.
    $Ordner = FileFindFirstFile(GUICtrlRead($Pfad) & "*")

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

    ; Check if the search was successful
    If $Ordner = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

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

    While 1

    $UOrdner = FileFindNextFile($Ordner)
    $Datei = FileFindFirstFile($Pfad & $UOrdner & "\")
    $UDatei = FileFindNextFile($Datei, "*.sg1")
    ;~ $Datei = FileFindNextFile($UOrdner)
    ;~ If @error Then ExitLoop
    ;~
    MsgBox(4096, "File:", $UDatei)
    WEnd

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

    ; Close the search handle
    FileClose($search)

    [/autoit]

    leider schetere ich schon beim ansatz mit dem suchen der datein in den unterordnern...
    die herachie: D:\Dateifinder\Test\->gaaanz viele unterordner<-\*.sg1 (bzw nach dem umbenennen .sg2)

    hoffe das ist nicht zu dreist wenn ich so viel gleich frage... :S

    Einmal editiert, zuletzt von sir-gunny (11. November 2008 um 22:44)

  • schieb^^

    hab die auflistug jetzt hinbekommen... geht jetzt um die anzeige in der liste... kann mir einer sagen wie ich da eine horizontale scrolleiste hinbekomme oder den inhalt rechtsbündig anzeigen kann?? hab schon überall gesucht und haufen ausprobiert.. aber die sch*** liste will absolut keinen horizontalen scrollbalken einfügen oder den text rechtsbündig anzeigen :( kann einer helfen??

  • Moin,

    der Fensterstil WS_HSCROLL funktioniert bei einer Listbox komischerweise nicht ...

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <ListboxConstants.au3>
    #include <File.au3>

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

    Global Const $WS_EX_COMPOSITED = 0x2000000 ; Gegen "Flackern"

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

    $Form1 = GUICreate ("Dateienfinder", 316, 289, 269, 154, $WS_OVERLAPPEDWINDOW, $WS_EX_COMPOSITED)
    GUICtrlSetState (-1,$GUI_SHOW)
    $List1 = GUICtrlCreateList ("", 5, 30, 129, 216, BitOR ($GUI_SS_DEFAULT_LIST, $WS_HSCROLL))
    $List2 = GUICtrlCreateList ("", 175, 30, 129, 216, BitOR ($GUI_SS_DEFAULT_LIST, $WS_HSCROLL))
    $Button5 = GUICtrlCreateButton (">", 138, 93, 34, 34, 0)
    GUICtrlSetFont (-1, 16, 800, 0)
    $Button6 = GUICtrlCreateButton ("<", 138, 143, 34, 34, 0)
    GUICtrlSetFont (-1, 16, 800, 0)
    $Button7 = GUICtrlCreateButton ("Hilfe", 62, 250, 75, 25, 0)
    $Button8 = GUICtrlCreateButton ("Beenden", 174, 250, 75, 25, 0)
    ;$Pfad = GUICtrlCreateLabel ("D:\Dateifinder\Test\", 6, 5, 298, 18)
    $Pfad = GUICtrlCreateLabel ("C:\WINDOWS\", 6, 5, 298, 18)
    GUISetState(@SW_SHOW)

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

    ; Shows the filenames of all files in the current directory.
    $Ordner = FileFindFirstFile(GUICtrlRead($Pfad) & "*")

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

    ; Check if the search was successful
    If $Ordner = -1 Then
    MsgBox(0, "Fehler", "Keine Pfade/Dateien entsprechen den Suchkriterien")
    Exit
    EndIf

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

    While 1

    ;$UOrdner = FileFindNextFile ($Ordner)
    ;$Datei = FileFindFirstFile ($Pfad & $UOrdner & "\")
    $UDatei = FileFindNextFile ($Ordner);, "*.sg1")
    ;~ $Datei = FileFindNextFile($UOrdner)
    If @error Then ExitLoop
    ;~
    GUICtrlSetData ($List1, $UDatei)
    WEnd

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

    While True

    Switch GUIGetMsg ( )
    Case -3
    ExitLoop
    EndSwitch
    WEnd

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

    ; Close the search handle
    FileClose($Ordner)
    ;FileClose($Datei)

    [/autoit]

    Aber Du kannst ja das Fenster weiter aufziehen. Oder Du nimmst ein Edit Steuerelement ...


    LG
    Greenhorn


  • hi... :)

    habs geschafft... die deitein such ich so:

    Spoiler anzeigen
    [autoit]

    Func _ArrayList1()
    $counterAray1 = 0
    $Array1L1 = _FileListToArray($Pfad,"*.*",2)
    If @Error = 1 Then
    MsgBox (0,"","Pfad nicht gefunden!")
    $counterAray1 = 1
    EndIf
    If @Error = 4 Then
    MsgBox (0,"","Datei nicht gefunden!")
    $counterAray1 = 1
    EndIf
    If $counterAray1 = 0 Then
    for $i = 1 to $Array1L1[0]
    $counterAray1 = 0
    $Array2L1 = _FileListToArray($Pfad & $Array1L1[$i] ,"*.sg1",0)
    If @Error = 1 Then
    $counterAray1 = 1
    EndIf
    If @Error = 4 Then
    $counterAray1 = 1
    EndIf
    If $counterAray1 = 0 Then
    For $x = 1 to $Array2L1[0]
    GUICtrlSetData ( $List1, $Array1L1[$i] & "\" & $Array2L1[$x])
    Next
    EndIf
    next
    EndIf
    EndFunc

    [/autoit]

    und umbenennen mit FileMove(), StringLeft und StringLen() -4 zeichen mit flag 9 :)

    jetzt fehlt nur noch das mit der list... weiss jemand wie man das hinbekommen kann oder so?

    Greenhorn: THX für deine hilfe :) fenster weiter aufziehen geht nich weill in der liste überwigend kurze datein stehen... nur manchmal halt längere aba die muss mann auch sehen können... und zu groß für paar datein is auch doof... habs gerade mit der editbox versucht... der schreib nachund nach die datein rein und überschrib sie dann mit der nächsten... also leider keine liste :(

    EDIT: Greenhorn. dein "gegen das flackern" ist geil! :) mach jetzt einach nen label indem der selektierte listeneintrag angezeigt wird :) thx :)

    was mir garede eingefallen ist... würde GUICtrlCreateListView auch gehen?

    2 Mal editiert, zuletzt von sir-gunny (11. November 2008 um 22:44)