PowerShell - подавить ошибку Copy-Item «Папка уже существует» - PullRequest
19 голосов
/ 24 февраля 2012

Когда я запускаю рекурсивную Copy-Item из папки, в которой есть подпапки, в новую папку, содержащую те же подпапки, что и оригинал, выдается ошибка, когда подпапки уже существуют.

Как я могу подавить это, потому что это ложный минус и может сделать истинные ошибки труднее увидеть?

Пример:

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

Copy-Item : Item with specified name C:\realFolder_new\subFolder already exists.

Ответы [ 3 ]

16 голосов
/ 25 февраля 2012

Вы можете попытаться перехватить все ошибки, которые могут произойти, и затем решить, заботитесь ли вы об этом или нет:

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorVariable capturedErrors -ErrorAction SilentlyContinue
$capturedErrors | foreach-object { if ($_ -notmatch "already exists") { write-error $_ } }
10 голосов
/ 09 июня 2016

Если вы добавите -Force к вашей команде, она перезапишет существующие файлы и вы не увидите ошибку.

-Recurse заменит все элементы в каждой папке и всех подпапках.

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -Recurse -Force
7 голосов
/ 24 февраля 2012

Вы можете настроить поведение обработки ошибок, игнорируя, используя:

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

Однако это также подавит ошибки, о которых вы хотели знать!

...