【发布时间】:2018-11-01 18:20:47
【问题描述】:
我有一个 PowerShell 脚本,我需要在其中递归地复制到一个文件夹,替换其中的所有文件:
Copy-Item -Path $source -Destination $destination -Recurse -Force -Verbose
由于目标文件夹中的某些文件的路径超过 260 个字符,因此我收到了 PathTooLongException。
我已经阅读了这些可能的解决方案:
- 使用自动复制
- 我宁愿使用纯 PowerShell
- 在注册表和组策略中启用长路径
- 要求用户必须重新启动他的控制台,我也不想更改用户的注册表。
- 为路径使用
\\?\前缀
正如我所说,我宁愿不使用前两个,第三个解决方案 (\\?\) 对我来说应该没问题,但实际上并没有复制文件。
当它执行时,它会立即完成,并且不会生成命令的输出。因此,目标中的文件不会被源中的文件替换。
有什么想法吗?
【问题讨论】:
-
这些是 UNC 路径 (
\\server,share) 还是本地路径 (`X:`)? -
所有路径都是本地路径。
-
使用 robocopy - 它是强大的。它经过了很好的测试。太快了。 [grin] 这是工作的正确工具。 posh/not-posh 不是要考虑的想法 - 正确的想法是“正确的工具与否”。 robocopy 从一个豪华的脚本中可以非常非常好地工作。 [咧嘴一笑]
标签: powershell