Chinasmoker Posted November 16, 2007 Posted November 16, 2007 I wote a script that's base on op file, moving or copying a dir to another drive,so I used a Progress bar to show Progress of moved or copied, but Progress isn't running,below my code: CODE $FileSize = DirGetSize($moveR) ProgressOn ("moved","moved") while 1 $filemoved = Round (DirGetSize($moveD & "\"&$enddir),2) $step = Round (($filemoved/$FileSize)*100,2) ProgressSet( $step, $step & " percent") WEnd ProgressOff() One is never too old to learn
Danny35d Posted November 16, 2007 Posted November 16, 2007 (edited) If you are using FileCopy() or FileMove() functions your script will pause until Filecopy() or Filemove() finish coping of moving files. Use AdlibEnable() to display the progress.$FileSize = DirGetSize($moveR) ProgressOn ("moved","moved") AdlibEnable("_Progress") FileMove("C:\foo.au3", "D:\mydir\bak.au3") ProgressOff() AdlibDisable() Func _Progress() $filemoved = Round (DirGetSize($moveD & "\"&$enddir),2) $step = Round (($filemoved/$FileSize)*100,2) ProgressSet( $step, $step & " percent") EndFunc Edited November 16, 2007 by Danny35d AutoIt Scripts:NetPrinter - Network Printer UtilityRobocopyGUI - GUI interface for M$ robocopy command line
Chinasmoker Posted November 16, 2007 Author Posted November 16, 2007 If you are using FileCopy() or FileMove() functions your script will pause until Filecopy() or Filemove() finish coping of moving files. Use AdlibEnable() to display the progress.$FileSize = DirGetSize($moveR) ProgressOn ("moved","moved") AdlibEnable("_Progress") FileMove("C:\foo.au3", "D:\mydir\bak.au3") ProgressOff() AdlibDisable() Func _Progress() $filemoved = Round (DirGetSize($moveD & "\"&$enddir),2) $step = Round (($filemoved/$FileSize)*100,2) ProgressSet( $step, $step & " percent") EndFunc does it need loop ? _progress. One is never too old to learn
Danny35d Posted November 16, 2007 Posted November 16, 2007 No it doesn't need a while loop. Once your script do AdlibEnable() it will call _Progress() function every 250 ms until it finish moving files and call AdlibDisable() AutoIt Scripts:NetPrinter - Network Printer UtilityRobocopyGUI - GUI interface for M$ robocopy command line
Chinasmoker Posted November 16, 2007 Author Posted November 16, 2007 No it doesn't need a while loop. Once your script do AdlibEnable() it will call _Progress() function every 250 ms until it finish moving files and call AdlibDisable() I ve patched it ,but the progress bar stayed 0 percent,then auto-closed that window,code:CODEFunc move() $moveR = GUICtrlRead($Input1) $moveD = GUICtrlRead($Input2) $spdir = StringSplit($moveR, "\") $enddir = $spdir[$spdir[0]] ;msgbox(0,"",$spdir[$spdir[0]]) $FileSize = DirGetSize($moveR)/1048576 ProgressOn ("移动进度","已移动") AdlibEnable("_Progress") DirCopy ($moveR,$moveD & "\"&$enddir) ProgressOff() AdlibDisable() EndFunc Func _Progress() Dim $filemoved,$moveD,$enddir,$FileSize $filemoved = Round (DirGetSize($moveD & "\"&$enddir)/1048576,2) $step = Round (($filemoved/$FileSize)*100,2) ProgressSet( $step) EndFunc Thank you One is never too old to learn
Danny35d Posted November 16, 2007 Posted November 16, 2007 You have this line (Dim $filemoved,$moveD,$enddir,$FileSize) inside _Progress() function so every time AdlibEnable("_Progress") call the function reset the value of $filemoved,$moveD,$enddir,$FileSize. Make the following variables global $moveD,$enddir,$FileSize Try it: Global $moveD, $enddir, $FileSize Func move() $moveR = GUICtrlRead($Input1) $moveD = GUICtrlRead($Input2) $spdir = StringSplit($moveR, "\") $enddir = $spdir[$spdir[0]] ;msgbox(0,"",$spdir[$spdir[0]]) $FileSize = DirGetSize($moveR) / 1048576 ProgressOn("????", "???") AdlibEnable("_Progress") DirCopy($moveR, $moveD & "\" & $enddir) ProgressOff() AdlibDisable() EndFunc ;==>move Func _Progress() Dim $filemoved $filemoved = Round(DirGetSize($moveD & "\" & $enddir) / 1048576, 2) $step = Round(($filemoved / $FileSize) * 100, 2) ProgressSet($step) EndFunc ;==>_Progress AutoIt Scripts:NetPrinter - Network Printer UtilityRobocopyGUI - GUI interface for M$ robocopy command line
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now