Progressbar für FileCopy

  • Hallo...
    versuche verzweifelt eine Prgressbar fürs FileCopy zu integrieren. Habe schon über die Suche div. Beiträge gesucht, einiges gefunden und probiert - aber ich krieg es absolut nicht auf die Reihe :cursing:

    So schaut es bisher aus (ja, ich weis - es geht mit sicherheit vieeeeel eleganter :D)

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $data1 = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data2 = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data3 = @ScriptDir & '\dateiC*.zip'
    $data4 = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'

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

    $dir1 = '\meinprogramm\1\update'
    $dir2 = '\meinprogramm\2\update'
    $dir3 = '\meinprogramm\3\update'
    $dir4 = '\meinprogramm\4\update'

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

    Func _message1()
    MsgBox(64, "Info","Keine Dateien gefunden in " & @scriptdir )
    EndFunc

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

    Func _message2()
    MsgBox(64,"Fehler","Meinprog.exe nicht gefunden")
    EndFunc

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

    Func _cprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("c:\meinprogramm\meine.exe") Then
    FileCopy($data1, "c:" & $dir1,1)
    FileCopy($data2, "c:" & $dir2,1)
    FileCopy($data3, "c:" & $dir3,1)
    FileCopy($data4, "c:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    Func _dprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("d:\meinprogramm\meine.exe") Then
    FileCopy($data1, "d:" & $dir1,1)
    FileCopy($data2, "d:" & $dir2,1)
    FileCopy($data3, "d:" & $dir3,1)
    FileCopy($data4, "d:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    Func _eprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("e:\meinprogramm\meine.exe") Then
    FileCopy($data1, "e:" & $dir1,1)
    FileCopy($data2, "e:" & $dir2,1)
    FileCopy($data3, "e:" & $dir3,1)
    FileCopy($data4, "e:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    Func _fprog()
    If Not FileExists($alle) Then
    _message1()
    ElseIf FileExists("f:\meinprogramm\meine.exe") Then
    FileCopy($data1, "f:" & $dir1,1)
    FileCopy($data2, "f:" & $dir2,1)
    FileCopy($data3, "f:" & $dir3,1)
    FileCopy($data4, "f:" & $dir4,1)
    Else
    _message2()
    EndIf
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _cprog()
    Case $dprog
    _dprog()
    Case $eprog
    _eprog()
    Case $fprog
    _fprog()
    EndSwitch
    WEnd

    [/autoit]


    Als zweites würde mich noch interessieren, ob man den FileCopy Dialog anders gestallten kann. Wie Ihr seht, ändert sich ja immer nur der LW Buchstabe. Dank euch schonmal.

    2 Mal editiert, zuletzt von dieselwiesel (2. Mai 2013 um 10:15)

  • Hallo dieselwiesel,

    hier das Skript mit dem eingebautem Fotschritt:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $data[4]
    $data[0] = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data[1] = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data[2] = @ScriptDir & '\dateiC*.zip'
    $data[3] = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'
    Global $dir[4]
    $dir[0] = '\meinprogramm\1\update\'
    $dir[1] = '\meinprogramm\2\update\'
    $dir[2] = '\meinprogramm\3\update\'
    $dir[3] = '\meinprogramm\4\update\'

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

    Func _SplitPath($sPath)
    ;splittet in DateiPfad und Datei (-filter)
    ;Autor autoBert
    Local $aLocalPath = StringSplit($sPath, "\")
    Local $aRet[2]
    If $aLocalPath[0] > 1 Then
    Local $sTmp = $aLocalPath[1] & "\"
    For $i = 2 To $aLocalPath[0] - 1
    $sTmp &= $aLocalPath[$i]
    $sTmp &= "\"
    Next
    $aRet[1] = $aLocalPath[$aLocalPath[0]]
    $aRet[0] = $sTmp
    EndIf
    Return $aRet
    EndFunc ;==>_SplitPath

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

    Func _prog($sLW)
    Local $aToCopy[1]
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\"&StringTrimRight($aToCopy[$i], 7) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\"&$aToCopy[$i] & " ==> " & $sLW & $dir[$j] & &$aToCopy[$i] @CRLF)
    FileCopy(@ScriptDir & "\"&$aToCopy[$i], $sLW & $dir[$j], 9)
    EndIf
    Next
    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    ;Sleep(Random(100, 1000, 1)) ;diese Zeile wieder löschen
    Next
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _prog("c:")
    Case $dprog
    _prog("d:")
    Case $eprog
    _prog("e:")
    Case $fprog
    _prog("f:")
    EndSwitch
    WEnd

    [/autoit]

    du solltest dir alle verwendeten Funtionen in _prog und SplitPath in der Hilfe anschauen.

    mfg autoBert

  • autoBert
    Thx 4 Help! In Zeile 61 (94) hat er etwas gemeckert, hab es dann umgeschrieben - hoffe das es richtig ist.

    Spoiler anzeigen
    [autoit]


    ConsoleWrite(@ScriptDir & "\"&$aToCopy[$i] & " ==> " & $sLW & $dir[$j] & &$aToCopy[$i] @CRLF)
    ;geändert
    ConsoleWrite(@ScriptDir & "\"&$aToCopy[$i] & " ==> " & $sLW & $dir[$j] & $aToCopy[$i] & @CRLF)

    [/autoit]


    Gestartet wurde dann, auch die ProgressBar hat sich in Bewegung gesetzt, nur kopiert wurde irgendwie nichts ?(

    RR04
    Danke für den Link.

  • Hallo...

    hab weiter probiert die Progressbar zu integrieren - hat leider immer noch nicht geklappt. Um das Bsp. von autoBert zum laufen zu kriegen fehlen mir einfach die Kentnisse. Hab bei yT auch ein Video gefunden in dem es schön beschrieben wurde, aber selbst damit will die Bar nicht anlaufen... :wacko: Aber durch das Bsp. von autoBert konnte ich das Script um einiges kürzen :thumbup:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $data1 = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data2 = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data3 = @ScriptDir & '\dateiC*.zip'
    $data4 = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'

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

    $dir1 = '\meinprogramm\1\update'
    $dir2 = '\meinprogramm\2\update'
    $dir3 = '\meinprogramm\3\update'
    $dir4 = '\meinprogramm\4\update'

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

    Func _copy($sLW)
    If Not FileExists($alle) Then
    MsgBox(64, "Info","Keine Dateien gefunden in " & @scriptdir & ".")
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    FileCopy($data1, $sLW & $dir1,1)
    FileCopy($data2, $sLW & $dir2,1)
    FileCopy($data3, $sLW & $dir3,1)
    FileCopy($data4, $sLW & $dir4,1)
    Switch MsgBox(64+4,"Info","Dateien kopiert nach " & $sLW & "\." & @CRLF & @CRLF & "MeinProg jetzt starten?")
    Case 6
    ShellExecute($sLW & "\meine.exe")
    EndSwitch
    Else
    MsgBox(64,"Fehler","Meinprog.exe nicht gefunden auf " & $sLW & "\.")
    EndIf
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _copy("C:")
    Case $dprog
    _copy("D:")
    Case $eprog
    _copy("E:")
    Case $fprog
    _copy("F:")
    EndSwitch
    WEnd

    [/autoit]

    So sah es nach dem Video aus...

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $data1 = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data2 = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data3 = @ScriptDir & '\dateiC*.zip'
    $data4 = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'

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

    $dir1 = '\meinprogramm\1\update'
    $dir2 = '\meinprogramm\2\update'
    $dir3 = '\meinprogramm\3\update'
    $dir4 = '\meinprogramm\4\update'

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

    Local $fileanzahl, $zahl

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

    $fileListe = _FileListToArray(@ScriptDir & '\datei*.zip')
    $fileanzahl = UBound($fileListe) -1

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

    Func _copy($sLW)
    If Not FileExists($alle) Then
    MsgBox(64, "Info","Keine Dateien gefunden in " & @scriptdir & ".")
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 1 To $fileAnzahl
    $zahl = 100 / $fileAnzahl * $i
    FileCopy($data1, $sLW & $dir1,1)
    FileCopy($data2, $sLW & $dir2,1)
    FileCopy($data3, $sLW & $dir3,1)
    FileCopy($data4, $sLW & $dir4,1)
    Switch MsgBox(64+4,"Info","Dateien kopiert nach " & $sLW & "\." & @CRLF & @CRLF & "MeinProg jetzt starten?")
    Case 6
    ShellExecute($sLW & "\meine.exe")
    EndSwitch
    GUICtrlSetData($Progress1,$zahl)
    Sleep(150)
    Next
    Else
    MsgBox(64,"Fehler","Meinprog.exe nicht gefunden auf " & $sLW & "\.")
    EndIf
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _copy("C:")
    Case $dprog
    _copy("D:")
    Case $eprog
    _copy("E:")
    Case $fprog
    _copy("F:")
    EndSwitch
    WEnd

    [/autoit]


    Hoffe Ihr könnt mir weiterhelfen.

  • Mein Skript funktioniert einwandfrei wenn die Zielverzeichnisstruktur erstellt werden kann oder bereits korrekt existiert. Da aber dein Skript wenn die Unterkaloge Update nicht existieren jeweils eine Datei Update erstellt funktioniert meines danach nicht mehr da die Zielverzeichnisstruktur weder erstellt werden kann nooch bereits korrekt existiert. Teste also mein Skript einmal nur mit bestehendem Hauptverzeichnis(LW:\meinprogramm)mit der EXE welche ja vorhanden sein muss.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $data[4]
    $data[0] = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data[1] = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data[2] = @ScriptDir & '\dateiC*.zip'
    $data[3] = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'
    Global $dir[4]
    $dir[0] = '\meinprogramm\1\update\'
    $dir[1] = '\meinprogramm\2\update\'
    $dir[2] = '\meinprogramm\3\update\'
    $dir[3] = '\meinprogramm\4\update\'

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

    Func _SplitPath($sPath)
    ;splittet in DateiPfad und Datei (-filter)
    ;Autor autoBert
    Local $aLocalPath = StringSplit($sPath, "\")
    Local $aRet[2]
    If $aLocalPath[0] > 1 Then
    Local $sTmp = $aLocalPath[1] & "\"
    For $i = 2 To $aLocalPath[0] - 1
    $sTmp &= $aLocalPath[$i]
    $sTmp &= "\"
    Next
    $aRet[1] = $aLocalPath[$aLocalPath[0]]
    $aRet[0] = $sTmp
    EndIf
    Return $aRet
    EndFunc ;==>_SplitPath

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

    Func _prog($sLW)
    Local $aToCopy[1]
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    _ArrayDisplay($aToCopy)
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\" & StringTrimRight($aToCopy[$i], 7) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\" & $aToCopy[$i] & " ==> " & $sLW & $dir[$j] & $aToCopy[$i] & @TAB)
    If FileCopy(@ScriptDir & "\" & $aToCopy[$i], $sLW & $dir[$j], 9) Then
    ConsoleWrite("OK" & @CRLF)
    Else
    ConsoleWrite("FAILED" & @CRLF)
    EndIf
    EndIf
    Next
    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    ;Sleep(Random(100, 1000, 1)) ;diese Zeile wieder löschen
    Next
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _prog("c:")
    Case $dprog
    _prog("d:")
    Case $eprog
    _prog("e:")
    Case $fprog
    _prog("f:")
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert

  • Hallo autoBert,

    bist ein ganz schöner Schlingel :D hab gefunden woran es lag - Zeile 61 Spalte 69, der Count von StringTrimRight für den Dateinamen (in dem Fall)... bin echt erstaunt was nicht alles für Blödsinn zu machen geht (wenn man Ahnung davon hat) :rofl: Könnte man das auch "abstellen" (nur interessehalber)?

    Hab mal die Zeile 58 gelöscht, damit das Array ListView nicht angezeigt wird. Das mit den Dir erstellen wenn sie nicht das sind ist leicht unvorteilhaft, interessanter wär es nicht zu kopieren wenn die Dir nicht exsistiert.

    Edit:
    Hab mal StringTrimRight gegen StringLeft getauscht, weil er sonst nicht mehr mitmacht wenn es z.B. von dateiA999 in 1000 übergeht. Dann wird zwar auch eine Datei namens dateiA123kevinjustinjason mitkopiert, aber damit kann "meine.exe" eh nix anfangen.

    Einmal editiert, zuletzt von dieselwiesel (19. Januar 2013 um 23:09)

  • bist ein ganz schöner Schlingel :D hab gefunden woran es lag - Zeile 61 Spalte 69, der Count von StringTrimRight für den Dateinamen (in dem Fall)... bin echt erstaunt was nicht alles für Blödsinn zu machen geht (wenn man Ahnung davon hat) :rofl: Könnte man das auch "abstellen" (nur interessehalber)?

    Auf Grund deines Kommentars bin ich von 3stelligen Nr.'n ausgegangen. Man kann StringTrimRight($aToCopy[$i], 7) gegen StringLeft($aToCopy[$i], 6) tauschen (wie du es bereits getan hast), dies ist sogar günstiger da dann nicht nur 3stellige Nr. berücksichtigt werden.

    Hab mal die Zeile 58 gelöscht, damit das Array ListView nicht angezeigt wird.

    War ja nur zur Kontrolle.

    Das mit den Dir erstellen wenn sie nicht das sind ist leicht unvorteilhaft, interessanter wär es nicht zu kopieren wenn die Dir nicht exsistiert.

    Du kannst den Parameter von FileCopy auf 1 setzen. Dann sollte allerdings auch der Dateiname mit übergeben werden:

    Spoiler anzeigen
    [autoit]

    Func _prog($sLW)
    Local $aToCopy[1]
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    ;_ArrayDisplay($aToCopy)
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\" & StringLeft($aToCopy[$i], 6) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\" & $aToCopy[$i] & " ==> " & $sLW & $dir[$j] & $aToCopy[$i] & @TAB)
    If FileCopy(@ScriptDir & "\" & $aToCopy[$i], $sLW & $dir[$j] & $aToCopy[$i], 1) Then
    ConsoleWrite("OK" & @CRLF)
    Else
    ConsoleWrite("FAILED" & @CRLF)
    EndIf
    EndIf
    Next
    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    Next
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

    [/autoit]

    mfg autoBert

  • autoBert
    Excellent :thumbup:

    Versuche jetzt noch, ob in der MsgBox angezeigt werden kann wieviele Dateien wohin kopiert wurden. Wieviele insg. kopiert wurden hab ich schon rausbekommen :D

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $data[4]
    $data[0] = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data[1] = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data[2] = @ScriptDir & '\dateiC*.zip'
    $data[3] = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'
    Global $dir[4]
    $dir[0] = '\meinprogramm\1\update\'
    $dir[1] = '\meinprogramm\2\update\'
    $dir[2] = '\meinprogramm\3\update\'
    $dir[3] = '\meinprogramm\4\update\'

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

    Func _SplitPath($sPath)
    ;splittet in DateiPfad und Datei (-filter)
    ;Autor autoBert
    Local $aLocalPath = StringSplit($sPath, "\")
    Local $aRet[2]
    If $aLocalPath[0] > 1 Then
    Local $sTmp = $aLocalPath[1] & "\"
    For $i = 2 To $aLocalPath[0] - 1
    $sTmp &= $aLocalPath[$i]
    $sTmp &= "\"
    Next
    $aRet[1] = $aLocalPath[$aLocalPath[0]]
    $aRet[0] = $sTmp
    EndIf
    Return $aRet
    EndFunc ;==>_SplitPath

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

    Func _prog($sLW)
    Local $aToCopy[1]
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    ;_ArrayDisplay($aToCopy)
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\" & StringLeft($aToCopy[$i], 6) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\" & $aToCopy[$i] & " ==> " & $sLW & $dir[$j] & $aToCopy[$i] & @TAB)
    If FileCopy(@ScriptDir & "\" & $aToCopy[$i], $sLW & $dir[$j] & $aToCopy[$i], 1) Then
    ConsoleWrite("OK" & @CRLF)
    Else
    ConsoleWrite("FAILED" & @CRLF)
    EndIf
    EndIf
    Next
    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    Sleep(150);damit es nicht ganz so zügig geht ;-P
    Next
    Switch MsgBox(64+4,"Info", $aToCopy[0] & " Dateien erfolgreich kopiert." & @CRLF & @CRLF & "(" & $aToCopy[1] & ") nach " & $sLW & $dir[0] & @CRLF & "(2) nach " & $sLW & $dir[1] & @CRLF & "(8) nach " & $sLW & $dir[2] & @CRLF & "(6) nach " & $sLW & $dir[3] & @CRLF & @CRLF & "Meine.exe jetzt starten?")
    ; das es $aToCopy[1] hier nicht ist weis ich schon, aber so in etwa wird es doch dann aussehen, oder?
    Case 6
    ShellExecute($sLW & "\meinprogramm\meine.exe")
    EndSwitch
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _prog("C:")
    Case $dprog
    _prog("D:")
    Case $eprog
    _prog("E:")
    Case $fprog
    _prog("F:")
    EndSwitch
    WEnd

    [/autoit]
  • Versuche jetzt noch, ob in der MsgBox angezeigt werden kann wieviele Dateien wohin kopiert wurden.


    Eine einfache Übung:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $data[4]
    $data[0] = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data[1] = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data[2] = @ScriptDir & '\dateiC*.zip'
    $data[3] = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'
    Global $dir[4][2]
    $dir[0][0] = '\meinprogramm\1\update\'
    $dir[1][0] = '\meinprogramm\2\update\'
    $dir[2][0] = '\meinprogramm\3\update\'
    $dir[3][0] = '\meinprogramm\4\update\'

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

    Func _SplitPath($sPath)
    ;splittet in DateiPfad und Datei (-filter)
    ;Autor autoBert
    Local $aLocalPath = StringSplit($sPath, "\")
    Local $aRet[2]
    If $aLocalPath[0] > 1 Then
    Local $sTmp = $aLocalPath[1] & "\"
    For $i = 2 To $aLocalPath[0] - 1
    $sTmp &= $aLocalPath[$i]
    $sTmp &= "\"
    Next
    $aRet[1] = $aLocalPath[$aLocalPath[0]]
    $aRet[0] = $sTmp
    EndIf
    Return $aRet
    EndFunc ;==>_SplitPath

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

    Func _prog($sLW)
    Local $aToCopy[1]
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    ;_ArrayDisplay($aToCopy)
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\" & StringLeft($aToCopy[$i], 6) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\" & $aToCopy[$i] & " ==> " & $sLW & $dir[$j][0] & $aToCopy[$i] & @TAB)
    If FileCopy(@ScriptDir & "\" & $aToCopy[$i], $sLW & $dir[$j][0] & $aToCopy[$i], 1) Then
    ConsoleWrite("OK" & @CRLF)
    $dir[$j][1]+=1
    Else
    ConsoleWrite("FAILED" & @CRLF)
    EndIf
    EndIf
    Next
    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    Next
    _ArrayDisplay($dir)
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _prog("c:")
    Case $dprog
    _prog("d:")
    Case $eprog
    _prog("e:")
    Case $fprog
    _prog("f:")
    EndSwitch
    WEnd

    [/autoit]

    Die Ausgabe kannst du aus dem jetzt 2-dimensinalen Array $Dir generieren.

    mfg autoBert

  • autoBert
    Hab das jetzt so mit der MsgBox gelöst, hoffe das ist richtig? Funktionieren tut es auch wenn es vllt. umständlich gemacht ist...

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $data[4]
    $data[0] = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data[1] = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data[2] = @ScriptDir & '\dateiC*.zip'
    $data[3] = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'
    Global $dir[4][2]
    $dir[0][0] = '\meinprogramm\1\update\'
    $dir[1][0] = '\meinprogramm\2\update\'
    $dir[2][0] = '\meinprogramm\3\update\'
    $dir[3][0] = '\meinprogramm\4\update\'

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

    Func _SplitPath($sPath)
    ;splittet in DateiPfad und Datei (-filter)
    ;Autor autoBert
    Local $aLocalPath = StringSplit($sPath, "\")
    Local $aRet[2]
    If $aLocalPath[0] > 1 Then
    Local $sTmp = $aLocalPath[1] & "\"
    For $i = 2 To $aLocalPath[0] - 1
    $sTmp &= $aLocalPath[$i]
    $sTmp &= "\"
    Next
    $aRet[1] = $aLocalPath[$aLocalPath[0]]
    $aRet[0] = $sTmp
    EndIf
    Return $aRet
    EndFunc ;==>_SplitPath

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

    Func _prog($sLW)
    Local $aToCopy[1]
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    ;_ArrayDisplay($aToCopy)
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\" & StringLeft($aToCopy[$i], 6) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\" & $aToCopy[$i] & " ==> " & $sLW & $dir[$j][0] & $aToCopy[$i] & @TAB)
    If FileCopy(@ScriptDir & "\" & $aToCopy[$i], $sLW & $dir[$j][0] & $aToCopy[$i], 1) Then
    ConsoleWrite("OK" & @CRLF)
    $dir[$j][1]+=1
    Else
    ConsoleWrite("FAILED" & @CRLF)
    EndIf
    EndIf
    Next
    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    Next
    ;_ArrayDisplay($dir)
    Switch MsgBox(64+4,"Info", $aToCopy[0] & " Dateien erfolgreich kopiert." & @CRLF & @CRLF & "(" & $dir[0][1] & ") nach " & $sLW & $dir[0][0] &@CRLF& "(" & $dir[1][1] & ") nach " & $sLW & $dir[1][0] &@CRLF& "(" & $dir[2][1] & ") nach " & $sLW & $dir[2][0] &@CRLF& "(" & $dir[3][1] & ") nach " & $sLW & $dir[3][0] & @CRLF & @CRLF & "Meine.exe jetzt starten?")
    Case 6
    ShellExecute($sLW & "\meinprogramm\meine.exe")
    EndSwitch
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cprog
    _prog("c:")
    Case $dprog
    _prog("d:")
    Case $eprog
    _prog("e:")
    Case $fprog
    _prog("f:")
    EndSwitch
    WEnd

    [/autoit]


    Allerdings addiert es bei der Ausgabe dazu, wenn man erneut den LW Button drückt. Kann man da den "Zwischenspeicher" löschen ( _ArrayDelete() )?

  • Allerdings addiert es bei der Ausgabe dazu, wenn man erneut den LW Button drückt. Kann man da den "Zwischenspeicher" löschen ( _ArrayDelete() )?


    Einfach die Elemente für die Summen auf 0 setzen:

    Spoiler anzeigen
    [autoit]

    Func _prog($sLW)
    Local $aToCopy[1]
    For $i = 0 To UBound($dir) - 1
    $dir[$i][1] = 0
    Next
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    ;_ArrayDisplay($aToCopy)
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\" & StringLeft($aToCopy[$i], 6) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\" & $aToCopy[$i] & " ==> " & $sLW & $dir[$j][0] & $aToCopy[$i] & @TAB)
    If FileCopy(@ScriptDir & "\" & $aToCopy[$i], $sLW & $dir[$j][0] & $aToCopy[$i], 1) Then
    ConsoleWrite("OK" & @CRLF)
    $dir[$j][1] += 1
    Else
    ConsoleWrite("FAILED" & @CRLF)
    EndIf
    EndIf
    Next
    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    Next
    _ArrayDisplay($dir)
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

    [/autoit]

    mfg autoBert

  • autoBert
    Alles supi, jetzt lüppts wunderprächtig [Blockierte Grafik: http://www.greensmilies.com/smile/smiley_emoticons_anbeten01.gif]

    Hab jetzt noch ein bißchen dran rumgespielt und ne % Anzeige reingebastelt.

    Spoiler anzeigen
    [autoit]


    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    $Label1 = GUICtrlCreateLabel("%", 221, 130, 35, 17, $SS_CENTERIMAGE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $iPercent = $i / $aToCopy[0] * 100
    GUICtrlSetData($Progress1, $iPercent)
    GUICtrlSetData($Label1,$iPercent & '%')

    [/autoit]


    Das funktioniert auch soweit ganz gut. Das einzigste was nervt/stört ist, wenn es mehrere Dateien sind zeigt es hinter der Kommastelle an. Kann man das mit Step 5 oder 10 (oder whatever) regeln und wenn ja - wo kommt das hin 8| ?

    Hab es auch mal auf [gelöst] gestellt, da die eigentliche Problematik erledigt ist.

  • Hallo, muss den Thread nochmal hoch holen weil eine neue Option rein soll, ich aber nicht weis ob und wie es geht...

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("MeinProgramm", 314, 196, 192, 114)
    $check = GUICtrlCreateCheckbox("Verschieben statt kopieren", 30, 10, 145, 17)
    $Combo1 = GUICtrlCreateCombo("", 190, 10, 60, 25, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, "1|2|3|4|5", "5")
    GUICtrlSetState(-1, $GUI_DISABLE)
    $cprog = GUICtrlCreateButton("C:", 72, 45, 75, 25)
    $dprog = GUICtrlCreateButton("D:", 166, 45, 75, 25)
    $eprog = GUICtrlCreateButton("E:", 72, 77, 75, 25)
    $fprog = GUICtrlCreateButton("F:", 166, 77, 75, 25)
    $Progress1 = GUICtrlCreateProgress(82, 130, 150, 16)
    $Label1 = GUICtrlCreateLabel("%", 221, 130, 35, 17, $SS_CENTERIMAGE)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $data[4]
    $data[0] = @ScriptDir & '\dateiA*.zip' ;Die Updatedateien sind fortlaufend numeriert, also dateiA001...002...003 usw. darum eine Wildcard wenn mehrere vorhanden sind.
    $data[1] = @ScriptDir & '\dateiB*.zip' ;Sie sollen auch nur Dateien kopiert werden, die in der ScriptDir sind.
    $data[2] = @ScriptDir & '\dateiC*.zip'
    $data[3] = @ScriptDir & '\dateiD*.zip'
    $alle = @ScriptDir & '\datei*.zip'
    Global $dir[4][2]
    $dir[0][0] = '\meinprogramm\1\update\'
    $dir[1][0] = '\meinprogramm\2\update\'
    $dir[2][0] = '\meinprogramm\3\update\'
    $dir[3][0] = '\meinprogramm\4\update\'

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

    Func _SplitPath($sPath)
    ;splittet in DateiPfad und Datei (-filter)
    ;Autor autoBert
    Local $aLocalPath = StringSplit($sPath, "\")
    Local $aRet[2]
    If $aLocalPath[0] > 1 Then
    Local $sTmp = $aLocalPath[1] & "\"
    For $i = 2 To $aLocalPath[0] - 1
    $sTmp &= $aLocalPath[$i]
    $sTmp &= "\"
    Next
    $aRet[1] = $aLocalPath[$aLocalPath[0]]
    $aRet[0] = $sTmp
    EndIf
    Return $aRet
    EndFunc ;==>_SplitPath

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

    Func _prog($sLW)
    Local $aToCopy[1]
    For $i = 0 To UBound($dir) - 1
    $dir[$i][1] = 0
    Next
    If Not FileExists($alle) Then
    MsgBox(64, "Info", "Keine Dateien gefunden in " & @ScriptDir)
    ElseIf FileExists($sLW & "\meinprogramm\meine.exe") Then
    For $i = 0 To UBound($data) - 1
    $aPath = _SplitPath($data[$i])
    $aTmp = _FileListToArray($aPath[0], $aPath[1])
    _ArrayConcatenate($aToCopy, $aTmp, 1)
    Next
    $aToCopy[0] = UBound($aToCopy) - 1
    _ArrayDisplay($aToCopy)
    For $i = 1 To $aToCopy[0]
    For $j = 0 To UBound($data) - 1
    If @ScriptDir & "\" & StringLeft($aToCopy[$i], 6) & "*.zip" = $data[$j] Then
    ConsoleWrite(@ScriptDir & "\" & $aToCopy[$i] & " ==> " & $sLW & $dir[$j][0] & $aToCopy[$i] & @TAB)
    If FileCopy(@ScriptDir & "\" & $aToCopy[$i], $sLW & $dir[$j][0] & $aToCopy[$i], 1) Then
    ConsoleWrite("OK" & @CRLF)
    $dir[$j][1] += 1
    Else
    ConsoleWrite("FAILED" & @CRLF)
    EndIf
    EndIf
    Next
    $iPercent = Int($i / $aToCopy[0] * 100)
    GUICtrlSetData($Progress1, $iPercent)
    GUICtrlSetData($Label1,$iPercent & '%')
    Sleep(150)
    Next
    ;_ArrayDisplay($dir)
    Else
    MsgBox(64, "Fehler", "Meinprog.exe nicht gefunden")
    EndIf
    EndFunc ;==>_prog

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $check
    If BitAND(GUICtrlRead($check), $GUI_CHECKED) = $GUI_CHECKED Then
    GUICtrlSetState($Combo1, $GUI_ENABLE)
    Else
    GUICtrlSetState($Combo1, $GUI_DISABLE)
    EndIf
    Case $cprog
    _prog("c:")
    Case $dprog
    _prog("d:")
    Case $eprog
    _prog("e:")
    Case $fprog
    _prog("f:")
    EndSwitch
    WEnd

    [/autoit]


    Es sollen nach aktivieren von "Verschieben statt kopieren" 1 bis 5 Dateisätze (dateiA-D.zip) verschoben (FileMove) werden.

    Also wenn es z.B. dateiA123.zip bis dateiA132.zip gibt sollen max. von dateiA123.zip bis dateiA127.zip verschoben werden (passend dazu auch die Sätze dateiB bis D.zip) - geht das? Wenn ja, über die _prog($sLW) Funktion oder muss es eine Funktion neue werden?