Dateien auswählen und kopieren über eine GUI?

  • Hi,
    ich würde gerne eine GUI erstellen.

    Dabei soll links ein Fenster sein, wo der Ordnerinhalt eines bestimmten Ordners auflistet wird.
    Ich markiere bestimmte Dateien in diesem Ordner.
    Dann klicke ich einen Button.
    Dann werden die Dateien in das rechte Fenster in den ausgewählten Ordner kopiert.

    Geht dies irgendwie?

  • Jo das geht

    Du machst dir die GUI mit einem Treeview, und dann den Button der die Funktion FileCopy hat.

    Wie du jetz allerdings genau die markierten kopierst weiß ich leider nicht :(


    Waluev

    Flensburg ist wie Payback - wenn man 18 Punkte hat bekommt man ein Fahrrad.

  • Hab die Gui erstellt, allerdings mit ListView statt Treeview, da ich dort mehrere Dateien markieren kann.
    Wie ich die markierten Dateien kopieren kann, weiß auch noch nicht :weinen:

  • Hi BugFix
    die Dateien sollen links marktiert werden
    rechts wähle ich den Zielordner aus
    dann Knopf drücken
    dann werden die Dateien vom linken Ordner in den rechten Ordner kopiert

    EDIT:
    So, hab mal angefangen. Es wird nun die korrekte Anzahl von ausgewählten Dateien kopiert. Allerdings nicht genau ide, die ich makriert habe :weinen: :weinen: :weinen:

    Wie kann ich in einem ListView die Einträge aufsteigend sortieren. Für absteigend weiss ich es.

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GuiList.au3>
    #include <GUIConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>

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

    ;Standardpfad hier auswählen
    $Standard = "D:\Test\"
    $Standard2 = "D:\Ziel\"

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

    GUICreate("Fotos übertragen", 1000, 300,$WS_EX_ACCEPTFILES)

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

    $kopieren = GUICtrlCreateButton("Kopieren", 10, 200)
    $umbenennen = GUICtrlCreateButton("umbenennen", 150, 200)
    $Kategorien = GUICtrlCreateButton("Kategorien vergeben", 300, 200)
    $datum = GUICtrlCreateButton("Datum zurücksetzen", 450, 200)
    $beenden = GUICtrlCreateButton("Beenden", 600, 200)

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

    $listview = GuiCtrlCreateListView ("Bild|Datum",10,10,310,150, $LVS_SORTDESCENDING)

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

    $Pfad = FileSelectFolder("Bitte den Pfad auswählen", "" ,"", $Standard) & "\"
    $FileList = _FileListToArray($Pfad)

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

    GUISetState()

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

    For $i = 1 To UBound($FileList)-1
    GUICtrlCreateListViewItem($FileList[$i], $listview)
    Next

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $umbenennen

    Case $msg = $kopieren
    $Zielordner = FileSelectFolder("Bitte den Pfad auswählen", "" ,"", $Standard2) & "\"
    Local $test = _GUICtrlListViewGetSelectedIndices($listview,1)
    If(IsArray($test))Then
    Local $i
    For $i = 1 To $test[0]
    MsgBox(0,"Selected", $test[$i])
    FileCopy($Pfad & $FileList[$i], $Zielordner, 1)
    Next
    Else
    EndIf

    Case $msg = $beenden
    Exit

    EndSelect
    Wend

    [/autoit]
    • Offizieller Beitrag

    Sortieren ist immer der gleiche Befehl, sortierst du absteigend und wendest den Befehl wieder an, wird aufsteigend sortiert.
    Hier das Bsp. aus der Hilfe, sortieren mit Klick auf Spaltenkopf:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GuiListView.au3>

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

    opt('MustDeclareVars', 1)
    Dim $listview, $Btn_Exit, $msg, $Status, $Btn_Insert, $ret, $Input_Index
    GUICreate("ListView Sort", 392, 322)

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

    $listview = GUICtrlCreateListView("col1|col2|col3", 40, 30, 310, 149)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("line4|5|more_a", $listview)
    GUICtrlCreateListViewItem("line5|4.50 |more_c", $listview)
    GUICtrlCreateListViewItem("line5|4.0 |more_c", $listview)
    GUICtrlCreateListViewItem("line3|23|more_e", $listview)
    GUICtrlCreateListViewItem("line2|0.34560 |more_d", $listview)
    GUICtrlCreateListViewItem("line1|1.0 |more_b", $listview)
    GUICtrlCreateListViewItem("line1|0.1 |more_b", $listview)
    GUICtrlCreateListViewItem("line1|10|more_b", $listview)
    _GUICtrlListViewSetColumnWidth ($listview, 0, 75)
    _GUICtrlListViewSetColumnWidth ($listview, 1, 75)
    _GUICtrlListViewSetColumnWidth ($listview, 2, 75)
    $Btn_Exit = GUICtrlCreateButton("Exit", 300, 260, 70, 30)

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

    GUISetState()

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

    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($listview) ]

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit
    ExitLoop
    Case $msg = $listview
    ; sort the list by the column header clicked on
    _GUICtrlListViewSort($listview, $B_DESCENDING, GUICtrlGetState($listview))
    EndSelect
    WEnd

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

    Exit

    [/autoit]
  • Hm, ich hab ja den Befehl drinnen, bei dem die Liste automatisch sortiert wird

    [autoit]

    $listview = GuiCtrlCreateListView ("Bild|Datum",10,10,310,150, $LVS_SORTDESCENDING)

    [/autoit]


    Leider ist dies absteigend. Gibts dafür auch aufsteigend?

  • Danke, habs jetzt auch in der Hilfe gefunden. Wußte bis jetzt nicht, wo ich schauen soll :irre:

    Sodele,
    so langsam wirds. Habe es geschafft das Datum und den Namen ins Array zu bekommen.

    Habs jetzt nach dem Namen Datum sortiert bekommen. Funktioniert nun.

    Danke :musik2:

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GuiList.au3>
    #include <GUIConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #include <_ArrayDisplay2D.au3>
    #include <_ArraySort_2ary.au3>

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

    ;Standardpfad hier auswählen
    $Standard = "D:\Test\"
    $Standard2 = "D:\Ziel\"

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

    GUICreate("Fotos übertragen", 1000, 300,$WS_EX_ACCEPTFILES)

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

    $kopieren = GUICtrlCreateButton("Kopieren", 10, 200)
    $umbenennen = GUICtrlCreateButton("umbenennen", 150, 200)
    $Kategorien = GUICtrlCreateButton("Kategorien vergeben", 300, 200)
    $datum = GUICtrlCreateButton("Datum zurücksetzen", 450, 200)
    $beenden = GUICtrlCreateButton("Beenden", 600, 200)
    GUICtrlCreateLabel("aktueller Quellpfad:", 10, 10)
    GUICtrlCreateLabel("aktueller Zielpfad:", 200, 10)

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

    $listview = GuiCtrlCreateListView ("Bild|Datum",10,40,250,150, $LVS_SORTDESCENDING);$LVS_SORTDESCENDING ;$LVS_SORTASCENDING

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

    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)

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

    _GUICtrlListViewSetColumnWidth ($listview, 0, 100)

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

    $Pfad = FileSelectFolder("Bitte den Pfad auswählen", "" ,"", $Standard) & "\"

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

    GUICtrlCreateLabel($Pfad, 110, 10)

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

    ;Größe des Arrays anhand von vorhandenen Dateien
    $anzahl = DirGetSize($Pfad, 3)
    DIM $neu[$anzahl[1]+1][2]

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

    $FileList = _FileListToArray($Pfad)

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

    For $i = 1 To UBound($FileList)-1
    $neu[$i][0] = $FileList[$i]
    $time2 = FileGetTime($Pfad & $FileList[$i], 0)
    $neu[$i][1] = $time2[0]& $time2[1] & $time2[2] & $time2[3] & $time2[4] & $time2[5]
    Next

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

    _ArraySort_2ary($neu,1,0)
    _ArrayDisplay2D($neu,"$neu")
    GUISetState()

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

    For $i = 1 To UBound($FileList)-1
    $time2 = FileGetTime($Pfad & $FileList[$i], 0)
    $video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5]
    GUICtrlCreateListViewItem($FileList[$i] & "|" & $video2, $listview)
    Next

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

    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount ($listview) ]
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1)
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $umbenennen

    Case $msg = $kopieren
    $Zielordner = FileSelectFolder("Bitte den Pfad auswählen", "" ,"", $Standard2) & "\"

    ;Zielordner anzeigen
    GUICtrlCreateLabel($Zielordner, 310, 10)

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

    Local $test = _GUICtrlListViewGetSelectedIndices($listview,1)
    If(IsArray($test))Then
    Local $i

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

    For $i = 1 To $test[0]
    FileCopy($Pfad & $neu[$test[$i]+1][0], $Zielordner, 1)
    Next
    Else
    EndIf

    Case $msg = $beenden
    Exit
    EndSelect
    Wend

    [/autoit]