27

当我从具有子文件夹的文件夹运行递归Copy-Item到包含与原始文件夹相同的子文件夹的新文件夹时,当子文件夹已经存在时会引发错误。

我该如何抑制这种情况,因为它是假阴性并且会使真正的失败更难被发现?

例子:

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

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

3 回答 3

25

您可以尝试捕获发生的任何错误,然后决定是否关心它:

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorVariable capturedErrors -ErrorAction SilentlyContinue
$capturedErrors | foreach-object { if ($_ -notmatch "already exists") { write-error $_ } }
于 2012-02-24T22:22:20.503 回答
18

如果您添加-Force到命令中,它将覆盖现有文件,您将看不到错误。

-Recurse将替换每个文件夹和所有子文件夹中的所有项目。

Copy-Item "C:\realFolder\*" "C:\realFolder_new" -Recurse -Force
于 2016-06-08T21:49:22.130 回答
10

您可以使用以下方法将错误处理行为设置为忽略:

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

但是,这也会抑制您确实想知道的错误!

于 2012-02-24T17:58:12.970 回答