我有一个 PowerShell 脚本,需要递归复制到文件夹,替换其中的所有文件:
Copy-Item -Path $source -Destination $destination -Recurse -Force -Verbose
Run Code Online (Sandbox Code Playgroud)
由于目标文件夹中的某些文件的路径超过 260 个字符,因此我收到 PathTooLongException。
我已阅读过这些可能的解决方案:
\\?\路径前缀正如我所说,我宁愿不使用前两个,第三个解决方案 ( \\?\) 对我来说应该没问题,但文件实际上并未被复制。
当它执行时,它会立即完成,并且不会生成命令的输出。因此,目标中的文件不会被源中的文件替换。
有任何想法吗?
前缀\\?\使用 Windows API 的 unicode 版本,这需要使用参数LiteralPath而不是Path:
Copy-Item -LiteralPath '\\?\C:\folder\subfolder' -Destination 'D:\folder'
Run Code Online (Sandbox Code Playgroud)
UNC 路径的语法\\server\share\folder略有不同\\?\UNC\server\share\folder
(与您没有特别相关,但如果有人偶然发现这个答案,供将来参考)
| 归档时间: |
|
| 查看次数: |
5082 次 |
| 最近记录: |