25
votes

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.
3
Does adding -Force solve the problem?Lee Grissom

3 Answers

23
votes

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 $_ } }
17
votes

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
9
votes

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!