我正在尝试自动化驱动器的拷贝/复制。许多驱动器都有很长的文件名,这使得进程中途失败。
我正在使用这个复制命令,但这两个都失败了。
XCOPY /E c:\folder-you-want-to-copy\*.* C:\destinationfolder\
copy-item -Path K:\* -Destination E:\ -Recurse -Force
Copy-Item:指定的路径、文件名或两者都太长。完全限定的文件名必须少于260个字符,目录名必须少于260个字符。
然后,我尝试了SO help power shell from here和SO help here,但在我的机器的Win 10策略中缺少启用选项
我如何递归地将文件从一个驱动器复制到另一个驱动器的长文件名/路径?
2条答案
按热度按时间ih99xse11#
robocopy
不遵守260个字符的限制(除非您使用/256开关):/E
是复制子文件夹,包括空的子文件夹,如果你不想复制空的文件夹,使用/S
代替。Full robocopy syntax
uwopmtnx2#
从Powershell 5.1开始,有一个注册表设置可用于处理Powershell脚本中的长路径。
运行以下命令,检查LongPathsEnabled的值是否设置为1。
使用Administrator Powershell,执行以下命令。
这将允许Copy-Item(和其他 *-Item命令)避免256个字符的限制,而不必修改脚本。
我在我的脚本中添加了以下代码来检查是否设置了这个值,以防我们移动到新的构建机器。