How can i call robocopy within a python script to bulk copy multiple folders?

robocopy /xd
robocopy command to copy all files and folders from one drive to another
robocopy /xj
robocopy batch file
robocopy examples
robocopy /xo
robocopy extra file
robocopy folder

I am trying to move multiple large folders (> 10 Gb , > 100 sub folders, > 2000 files ) between network drives. I have tried using shutil.copytree command in python which works fine except that it fails to copy a small percentage (< 1 % of files ) for different reasons.

I believe robocopy is the best option for me as i can create a logfile documenting the transfer process. However as i need to copy > 1000 folders manual work is out of question.

So my question is essentially how can i call robocopy (i.e. command line ) from within a python script making sure that logfile is written in an external file.

I am working on a Windows 7 environment and Linux/Unix is out of question due to organizational restrictions. If someone has any other suggestions to bulk copy so many folders with a lot of flexibility they are welcome.

Subproccess allows you to make system calls. This will allow you to call robocopy as you would from the command line.

from subprocess import call
call(["robocopy", "basefolder newfolder /S /LOG:mylogfile"])

Copy multiple folders to a single destination with robocopy, It'll robocopy the fullpath of each result (full path to your result-directories) and put them into . You would do it in a batch file. command), or you could use a scripting language like Ruby or Python on Windows. You can't select multiple source directories. meta chat tour help blog privacy policy legal contact us full site. Thanks, @dbeato. I just knew that I was missing something. Believe that you found it there. @SteveWylie, if you want the day's copy as of x time, you want to just run the robocopy without the /mon:1 option. Otherwise, if you are looking for a 'close to hot' type of copy you'd want to run 2 different scripts, one on each directory to monitor.

Like halfs13 said use subprocess but you might need to format it like so

from subprocess import call call(["robocopy",'fromdir', 'todir',"/S"]) Or else it may read the source as everything

The Ultimate Guide to Robocopy, Returns standardized exit codes for use in scripts You have a lot of options to copy or move files with robocopy! When copying multiple folders, use the /XD switch to exclude folders from the run. If you're executing robocopy with a batch file, you can find the value of the %ERRORLEVEL% variable. This can be done with robocopy too. We will provide /MOV option in order to move files and folders. > robocopy mytest yourtest /S /MOVE Logging Operations. While doing copy and move operations we can also need some logs, especially in bulk data operations. We can write a log about specified operations with /LOG option.

How to use Robocopy to back up all your data in Windows 10 , This simple Robocopy script leverages a few useful switches to make the task Windows 10 run commands you should know (but probably forgot) Now, I want to back up every folder in the source, even any empty folders, as they Robocopy can simultaneously copy multiple files in parallel, which will� With the help of %~nxd we separate the folder name and extension from the entire path and pass it to robocopy to ensure that the same folders are created at the destination of \\datastore\somefolder. Choose your robocopy switches by your taste. The for command allows you to enter and pass explicit names to another command, robocopy in this case.

This put me on the right path but I had to comma separate the options, e.g.

from subprocess import call
call(["robocopy", "./", "newfolder/test02", "/S", "/LOG:mylogfile"])

This worked a treat. The "/S" copied all subfolders.

Windows Robocopy Command Tutorial with Examples To Copy , Robocopy or Robust File and Folder Copy application is very Multi-threaded copying which will allow copy, mirror multiple files and directories at the same copy and move operations we can also need some logs, especially in bulk process programming python regex regular expression security shell� Great script - one suggestion though: when using shutil.copy(), the files which are copied into targetdir will have the current date/time in their attributes, not the sourcedir file date/time. To fix this, simply change instances of shutil.copy() to shutil.copy2() - which does copy file attributes by calling shutil.copystat().

cmd = 'robocopy.exe {0} {1} /S'.format(srcDir, destPath)
output =, capture_output=True, text=True)

The above snippet will do it.

Note: If srcDir and destPath has any white space in it, then the cmd.split() will not work. Instead you need to do the following:

output =['robocopy.exe',
                         r'<full src path>',
                         r'<full dest path>',

You can read all about subprocess here:

Robocopy command syntax and examples, Robocopy command is useful to copy deep folder structure with data scattered Example: Copy all the files in the directory D:\dir1\data to E:\backup\data. Run the below Robocopy command to copy directory structure i.e deep copy of The option '/sec' copies all the file access permissions to the destination folder also. Using the /L option, you can tell robocopy to enumerate all of the files and/or folders you specify and return a list of files it would have copied/moved. You can use the /L option with any other option.

How to exclude files and folders copy using Robocopy on Windows 10, To exclude a file while copying with Robocopy, use and select the Run as administrator option. copy the files and folders excluding a specific file to This example excludes multiple files using Robocopy option: specified in the command using the /XF switch. I'm using robocopy to do backups with a PowerShell script, and it's pretty awesome, except that I'd like it to only show the progress percentage while it copies and not all of the other information. The other information clutters the command window, which I'd clean and simple so that it's easy to see the overall progress of the backup.

Have Robocopy copy directories and files listed in a log file, So we're attempting to copy files from a large share to multiple smaller drives. How do we get robocopy to copy folders and files from this log?? You can call robocopy from Powershell easily enough but how you're going to import the log into a file list is I'm most proficient in PowerShell but am alright with python too. Copying the files from each sub-folder to a single folder manually can be a tiresome task especially if you have a large number of folders. However, you don’t need to dig into each and every folder to do that, as there are several ways to quickly copy or move files from all the sub-folders to a single folder — i.e., flatten a directory structure.

Copy large number of files but exclude certain sub folders on Windows, I need to copy all of the projects but exclude the node_modules folder within each project. Is there an easy way to do this in bulk? As I have large quantities of � Scenario: I have a file server where new folders with files are created everyday. These folders size may range from few hundred MBs to GBs. For archiving purposes, my task is to copy yesterday’s records (Folders and the files within) along with file permissions to another location. Here is my script: # Define the variables