Jump to content

Move all files/folders/subfolders with progress bar

Recommended Posts

Hi guys :-)

I have been using this script to move ALL content from A to B, and was wondering if anyone had an idea for how I could implement a progress bar?

$source = 'C:\temp\folderA'
$dest = 'C:\temp\folderB'

FileMove($source & "\*.*", $dest, 1) ;Move all source files first
$hSearch = FileFindFirstFile($Source & "\*.*") ;Now find any remaining (in this case: folders)
if $hSearch = -1 then exit ;No folders
While 1
    $hFilename = FileFindNextFile($hSearch)
    if @ERROR then exitloop ;No more files
    DirMove($source & "\" & $hFilename, $Dest,1);move subdir and all contents to new location


Link to comment
Share on other sites

1 hour ago, Sky05 said:

... and was wondering if anyone had an idea for how I could implement a progress bar?

There are several solutions, e.g.  :


Edited by Musashi


"In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move."

Link to comment
Share on other sites

A simple example, alternatively search Google with the term "AutoIt Copy with Progress bar".

#include <File.au3>

Global $g_sSource = "C:\temp\folderA"
Global $g_sTarget = "C:\temp\folderB"


Func _Example1()
    Local $aSource = _FileListToArrayRec($g_sSource, "*", 1, 1, 0, 1)
        If @error Then Exit MsgBox(4096, "Error", "No Folders/Files found.")

    Local $iIndex = 100/$aSource[0], $iProgress = $iIndex
    ProgressOn("Moving", $g_sSource)
    For $i = 1 To $aSource[0]
        ProgressSet($iProgress, "..\" & $aSource[$i], "Moving : " & $g_sSource)
        FileMove($g_sSource & "\" & $aSource[$i], $g_sTarget & "\" & $aSource[$i], 9)
        $iProgress += $iIndex
    ProgressSet(100, "Done", "Complete")


Link to comment
Share on other sites

  • Moderators


Even as the author of _FileListToArrayRec, I must admit it can be a bit slow at times as it has a lot of internal code to check for specific names, extensions, type, etc. As all you are looking for is a count of ALL the content, you might find DirGetSize is a faster solution.


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:


ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area


Link to comment
Share on other sites

  • 2 months later...



First Great script!!!!

can this be adapted easily for file deletion?


I would also guess if I want this function to COPY instead of move I would simply change

 FileMove($g_sSource & "\" & $aSource[$i], $g_sTarget & "\" & $aSource[$i], 9)



 FileCopy($g_sSource & "\" & $aSource[$i], $g_sTarget & "\" & $aSource[$i], 9)


could you use DirCopy as well?

Edited by goodmanjl531
Link to comment
Share on other sites

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...