Kopieren von Drive

  • Hi Leute!

    Habe mir ein Kopier Func geschrieben um große sachen einfach und schnell zu kopieren nun habe ich ein problem beim kopieren z.B alle daten von e:\ nach c:\..\..\Desktop zeigt mir die GUI ab und zu mal auch öffters ( keine Rückmeldung ) an!
    das lesen und schreiben eine zeit brauchen ist kla aber wie kann ich diese kleine unschönheit ^^ beseitigen!

    Schaut euch den Code mal an u. o. testet mal wie es bei euch ist!

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <_FileList.au3>

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

    Opt('MustDeclareVars', 1)
    Opt("GUIOnEventMode", 1)

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

    Local $Sec, $Min, $Hour, $Time, $EndTicks, $StrinSplit, $FehlerSave = '', $aO, $aD, $Quell, $Ziel, $NZ, $prog
    Local $Groesse, $Ordner, $Datein, $Dauer, $Proz
    Global $GUI

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

    $GUI = GUICreate('Drive - Kopie', 400, 130, -1, -1)
    GUISetOnEvent(-3, '_Exit')
    $Groesse = GUICtrlCreateLabel('Größe :', 240, 20, 100, 20)
    $Ordner = GUICtrlCreateLabel('Ordner :', 240, 40, 100, 20)
    $Datein = GUICtrlCreateLabel('Datein :', 240, 60, 100, 20)
    $Dauer = GUICtrlCreateLabel('Dauer :', 240, 80, 100, 20)
    $Proz = GUICtrlCreateLabel('', 282, 104, 30, 20)
    GUICtrlCreateLabel('Quell-Drive', 12, 5, 52, 20)
    $Quell = GUICtrlCreateInput('', 10, 20, 200, 20)
    GUICtrlCreateLabel('Ziel-Drive', 12, 50, 52, 20)
    $Ziel = GUICtrlCreateInput('', 10, 70, 200, 20)
    GUICtrlCreateButton('Start', 330, 100, 60, 20)
    GUICtrlSetOnEvent(-1, '_Kopie')
    $prog = GUICtrlCreateProgress(10, 100, 265, 20)
    GUISetState()

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

    Func _Kopie()
    If GUICtrlRead($Ziel) = '' Or GUICtrlRead($Quell) = '' Then Return
    $aO = _FilesListRekursiv(GUICtrlRead($Quell), 1, 1, '*')
    $aD = _FilesListRekursiv(GUICtrlRead($Quell), 1, 0, '*')
    _TicksToTime(StringReplace(Round((DirGetSize(GUICtrlRead($Quell)) / 20480) / 60 / 60, 1), ',', '.') * 60 * 1000, $Hour, $Min, $Sec)
    GUICtrlSetData($Groesse, 'Größe : ' & Round(DirGetSize(GUICtrlRead($Quell)) / 1024 / 1024) & ' MB')
    GUICtrlSetData($Dauer, 'Dauer : ' & StringFormat("%02i:%02i:%02i", $Hour, $Min, $Sec))
    GUICtrlSetData($Ordner, 'Ordner : ' & $aO[0])
    GUICtrlSetData($Datein, 'Datein : ' & $aD[0])
    $NZ = GUICtrlRead($Ziel)
    If StringRight($NZ, 1) = '\' Then $NZ = StringTrimRight($NZ, 1)
    For $i = 1 To UBound($aO) - 1
    $StrinSplit = StringSplit($aO[$i], '\')
    DirCreate($NZ & StringTrimLeft($aO[$i], StringLen($StrinSplit[1])))
    Next
    For $i = 1 To UBound($aD) - 1
    $StrinSplit = StringSplit($aD[$i], '\')
    GUICtrlSetData($prog, $i * 100 / $aD[0])
    GUICtrlSetData($Proz, Round($i * 100 / $aD[0]) & '%')
    If FileCopy($aD[$i], $NZ & StringTrimLeft($aD[$i], StringLen($StrinSplit[1]))) = 0 Then ContinueLoop
    ;Sleep(500)
    Next
    GUICtrlSetData($prog, 100)
    GUICtrlSetData($Proz, 'Fertig!')
    EndFunc ;==>_Kopie

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

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

    While 1 * Sleep(10)
    WEnd

    [/autoit]


    #include <_FileList.au3> im anhang!

    LG Kleiner