我有一个PowerShell脚本,需要在其中以递归方式复制到文件夹,替换其中的所有文件:
Copy-Item -Path $source -Destination $destination -Recurse -Force -Verbose
由于目标文件夹中的某些文件的路径超过了260个字符,因此我得到了PathTooLongException。
我已经阅读了以下可能的解决方案:
\\?\
前缀正如我所说,我宁愿不使用前两个,第三个解决方案(\\?\
)对我来说应该没问题,但是实际上并没有复制文件。
执行时立即完成,并且不会从命令生成任何输出。结果,目标位置的文件不会被源文件替换。
有什么想法吗?
答案 0 :(得分:1)
\\?\
前缀使用Windows API的unicode版本,这需要使用LiteralPath
参数而不是Path
:
Copy-Item -LiteralPath '\\?\C:\folder\subfolder' -Destination 'D:\folder'
UNC路径\\server\share\folder
的语法略有不同\\?\UNC\server\share\folder
(与您没有特别关系,但是如果有人偶然发现此答案,以供将来参考)