invoke Emcopy (or Robocopy) in PS

This topic contains 7 replies, has 3 voices, and was last updated by Profile photo of random commandline random commandline 7 months ago.

  • Author
    Posts
  • #38680
    Profile photo of Mike Campione
    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
    Profile photo of random commandline
    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
    Profile photo of Mike Campione
    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
    Profile photo of Anthony Stringer
    Anthony Stringer
    Participant

    Can you provide sample contents of your input text file and your desired results? The full paths would be helpful

  • #38710
    Profile photo of Mike Campione
    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
    Profile photo of random commandline
    random commandline
    Participant

    I modified my comment. Try it again.

  • #38715
    Profile photo of Mike Campione
    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
    Profile photo of random commandline
    random commandline
    Participant

    Excellent, glad I could help.

You must be logged in to reply to this topic.