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
#include <Date.au3>
#include <_FileList.au3>
Opt('MustDeclareVars', 1)
Opt("GUIOnEventMode", 1)
Local $Sec, $Min, $Hour, $Time, $EndTicks, $StrinSplit, $FehlerSave = '', $aO, $aD, $Quell, $Ziel, $NZ, $prog
Local $Groesse, $Ordner, $Datein, $Dauer, $Proz
Global $GUI
$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()
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
Func _Exit()
Exit
EndFunc ;==>_Exit
While 1 * Sleep(10)
WEnd
#include <_FileList.au3> im anhang!
LG Kleiner