invoke Emcopy (or Robocopy) in PS

This topic contains 7 replies, has 3 voices, and was last updated by  random commandline 1 year, 8 months ago.

• Author
Posts
• #38680

Mike Campione
Participant

I need to copy multiple folders to a new location. only select folders need to be copied in the source directory which can be supplied via a file, but I am having trouble figuring out how to use emcopy or robocopy within PS to do this. I have tried many combinations and have not found something which will work. Since I have several hundred folders to move, it would be nice to do this via script.

get-content c:\tmp\file.txt | invoke-command "./emcopy" (dest directory) (switches)

I was thinking something like this, but cannot find the correct combination. I am a low to average PS scripter, so please take it easy on me....Any help is much appreciated.

I have also tried to use 'copy-item, which does work well, but it is way too slow.

• #38685

random commandline
Participant
$source = Get-Content \\path\to\sourcefile.txt$dest = '\\path\to\destinationfolder'
foreach ($folder in$source){
$leaf = Split-Path$folder -Leaf
$newdest = join-path$dest -ChildPath $leaf Robocopy.exe$folder $newdest /E /COPY:DATSO }  • #38694 Mike Campione Participant Thank you for the input. How can I copy the folder names also? The code will copy all of the files and sub-folders into the root of the destination, but I need to preserve the folder names also Example Source has \folder1\files \folder2\files Destination needs the same. \folder1\files \folder2\files • #38707 Anthony Stringer Participant Can you provide sample contents of your input text file and your desired results? The full paths would be helpful • #38710 Mike Campione Participant The source would be like this: \\server1\share1\folder1 \\server1\share1\folder2 \\server1\share1\folder3 etc. these folders will be in a txt file, as I don't need all of them, just lets say folder1 and folder 3. example: \\server1\share1\folder1 \\server1\share1\folder3 I will be moving them to the destination \\server2\share2\folder1, \\server2\share2\folder3, etc The code above is helpful, but it takes the contents of folder1 and folder3 and puts them at the root of \\server2\share2 if I define$dest as \\server2\share2.

I have several hundred of these to do and it is not practical to define each destination separately. Is there a way to define the 'folder1, folder3' names so they are written at the destination?

• #38714

random commandline
Participant

I modified my comment. Try it again.

• #38715

Mike Campione
Participant

I think that does it. I was looking at split-path but didn't get it to work. Thanks so much for the help!

• #38717

random commandline
Participant