Jump to content

Recommended Posts

Posted

Hi.

I have to copy a bunch of quite large files for my users to the server for backup purposes.

I found quite a lot of threads on "filecopy with progress", they didn't really help to solve what I need:

All files to be copied are hold in an array. Progress1 displays the percentage of "files copied". As the files are large, I want a progress2, displaying the percentage of the CURRENT file's copy process.

This 2nd task is where I fail. Looks like I need to copy the file in chunks, so that I can update the progress bar after each portion copied. But this fails, because the FileRead() doesn't seem to get further data somewhere :mellow: within the copy process.

The code below just covers the "progress1", the other lines were kicked to make it shorter.

; autoit 3.3.4.0

; set file names
$file = "w2ksp4de.iso" ; file size: 393.170.944 bytes
$in = "C:\install\" & $file
$out = "C:\temp2\" & $file

; open files
$h_in = FileOpen($in, 0 + 16) ; using 0 fails as well
$h_out = FileOpen($out, 2 + 8 + 16) ; using 2 + 8  fails as well


$w = 400
$h = 80
$MyGui = GUICreate("File Copy Progress", $w, $h)
$Prgr = GUICtrlCreateProgress(8, 8, $w - 16, 20)
$Lbl = GUICtrlCreateLabel("", 8, 35, $w - 16, 40)
GUISetState(@SW_SHOW)

AdlibRegister("Update_it", 1000)
$C_Size = 4 * 1024 ; default NTFS cluster size. Other sizes fail at different positions.
$C_Count = 0
While 1
    $C_Count += 1
    $Chunck = FileRead($h_in, $C_Size)
    If @error == -1 Then
        ConsoleWrite("Chunk # " & $C_Count & ", Extended=" & @extended & @CRLF)
        ExitLoop
    EndIf
    ConsoleWrite(@extended & @CRLF)
    If Not FileWrite($h_out, @extended) Then
        MsgBox(0, "Error", "Copying *NOT*`completed successfully!")
    EndIf
WEnd
FileClose($h_out)
FileClose($h_in)
AdlibUnRegister("update_it")

MsgBox(0, "info", "done.")


Func Update_it()
    $Full = FileGetSize($in)
    $Done = FileGetSize($out)
    $Prozent = Round($Done / $Full * 100, 1)
    ConsoleWrite($Prozent & ", " & $Done & ", " & $Full & @CRLF)
    GUICtrlSetData($Prgr, $Prozent)
    GUICtrlSetData($Lbl, $Prozent & "% copied." & @LF & "Org: " & $Full & @LF & "Done: " & $Done)
EndFunc   ;==>Updaten

What do I miss? :(

Beside the failure problem, the copy process I coded is incredibly slow ...

Regards, Rudi.

Earth is flat, pigs can fly, and Nuclear Power is SAFE!

Posted

Hi.

http://www.autoitscript.com/forum/index.php?showtopic=104509&st=0&p=739268&hl=file%20progress%20bar&fromsearch=1&#entry739268

Thanks, I've seen that one.

But I can't see where it should describe to manage a progress bar for the CURRENT RUNNING FILECOPY(). (2 progress bars, one = overall progress, other one cur.dir?)

Seems I'm blind?? :mellow:

Who opens my eyes, pls?

Regards, Rudi.

Earth is flat, pigs can fly, and Nuclear Power is SAFE!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...