31

When I run a recursive Copy-Item from a folder that has sub folders to a new folder that contains the same sub folders as the original, it throws an error when the subfolders already exist.

How can I suppress this because it is a false negative and can make true failures harder to see?

Example:

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse

Copy-Item : Item with specified name C:\realFolder_new\subFolder already exists.
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
user1161625
  • 642
  • 1
  • 8
  • 13

3 Answers3

27

You could try capturing any errors that happen, and then decide whether you care about it or not:

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorVariable capturedErrors -ErrorAction SilentlyContinue
$capturedErrors | foreach-object { if ($_ -notmatch "already exists") { write-error $_ } }
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Daniel Richnak
  • 1,584
  • 8
  • 12
26

If you add -Force to your command it will overwrite the existing files and you won't see the error.

-Recurse will replace all items within each folder and all subfolders.

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -Recurse -Force
L. F.
  • 19,445
  • 8
  • 48
  • 82
leemicw
  • 751
  • 8
  • 15
12

You can set the error handling behavior to ignore using:

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorAction SilentlyContinue

However this will also suppress errors you did want to know about!

Andy Arismendi
  • 50,577
  • 16
  • 107
  • 124
  • Yeah... that only sorta helps :) Is the already exists thing a bug in the Copy-Item cmdlet? Seems like a waste of output- if it's already there and I was about to create it then who cares.. at least give me a -slientOnExistingDirs or -verbose switch, right? Thanks for your help though.. I'll think about that option. – user1161625 Feb 24 '12 at 22:21