PowerShell - suprime o erro Copy-Item 'A pasta já existe'
-
12-11-2019 - |
Pergunta
Quando executo um recursivo Copiar Item de uma pasta que possui subpastas para uma nova pasta que contém as mesmas subpastas da original, gera um erro quando as subpastas já existem.
Como posso suprimir isso porque é um falso negativo e pode dificultar a visualização de falhas verdadeiras?
Exemplo:
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse
Copy-Item : Item with specified name C:\realFolder_new\subFolder already exists.
Solução
Você pode tentar capturar quaisquer erros que ocorram e então decidir se você se importa com isso ou não:
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorVariable capturedErrors -ErrorAction SilentlyContinue
$capturedErrors | foreach-object { if ($_ -notmatch "already exists") { write-error $_ } }
Outras dicas
Se você adicionar -Force
ao seu comando, ele substituirá os arquivos existentes e você não verá o erro.
-Recurse
substituirá todos os itens dentro de cada pasta e todas as subpastas.
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -Recurse -Force
Você pode definir o comportamento de tratamento de erros para ignorar usando:
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorAction SilentlyContinue
No entanto, isso também suprimirá erros que você fez quero saber sobre!