当我从具有子文件夹的文件夹运行递归Copy-Item到包含与原始文件夹相同的子文件夹的新文件夹时,当子文件夹已经存在时会引发错误。
我该如何抑制这种情况,因为它是假阴性并且会使真正的失败更难被发现?
例子:
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse
Copy-Item : Item with specified name C:\realFolder_new\subFolder already exists.
当我从具有子文件夹的文件夹运行递归Copy-Item到包含与原始文件夹相同的子文件夹的新文件夹时,当子文件夹已经存在时会引发错误。
我该如何抑制这种情况,因为它是假阴性并且会使真正的失败更难被发现?
例子:
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse
Copy-Item : Item with specified name C:\realFolder_new\subFolder already exists.
您可以尝试捕获发生的任何错误,然后决定是否关心它:
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorVariable capturedErrors -ErrorAction SilentlyContinue
$capturedErrors | foreach-object { if ($_ -notmatch "already exists") { write-error $_ } }
如果您添加-Force
到命令中,它将覆盖现有文件,您将看不到错误。
-Recurse
将替换每个文件夹和所有子文件夹中的所有项目。
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -Recurse -Force
您可以使用以下方法将错误处理行为设置为忽略:
Copy-Item "C:\realFolder\*" "C:\realFolder_new" -recurse -ErrorAction SilentlyContinue
但是,这也会抑制您确实想知道的错误!