使用递归进行文件复制期间的powershell错误检查

alp*_*dev 4 error-handling powershell recursion copy-item

我有一个程序可以递归地复制文件夹和文件。例子:

Copy-Item -path "$folderA" -destination "$folderB" -recurse 
Run Code Online (Sandbox Code Playgroud)

有时文件不会复制。有没有办法“步入递归”或更好的方法来做到这一点,这样我就可以在过程中而不是事后启用某种错误检查。甚至可能进行测试路径并提示重新复制?

Dav*_*uda 5

你可以。例如,以下代码片段将实际复制并检查每个文件是否存在可能的错误。您还可以将自定义代码放在开头来检查一些先决条件:

get-childItem $source -filter *.* | foreach-object {
    # here you can put your pre-copy tests...

    copy-item $_.FullName -destination $target -errorAction SilentlyContinue -errorVariable errors
    foreach($error in $errors)
    {
        if ($error.Exception -ne $null)
        {
            write-host -foregroundColor Red "Exception: $($error.Exception)"
        }
        write-host -foregroundColor Red "Error: An error occured during copy operation."
    }
}
Run Code Online (Sandbox Code Playgroud)