首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows中自动复制路径太深的文件?

如何在Windows中自动复制路径太深的文件?
EN

Stack Overflow用户
提问于 2008-10-25 14:58:47
回答 5查看 8.2K关注 0票数 4

我希望能够有选择地复制文件列表并保留它们的目录结构。问题是有相当多的文件的路径超过256个字符。这个问题通常是如何处理的?

编辑:我应该清楚地表明,我只想有选择地复制文件,而不是文件夹。我不认为robocopy可以有效地复制单个文件和它的文件夹结构。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-10-25 15:04:34

我编写了一个VBscript来检查路径长度,并在达到某个阈值时立即调用subst。这些调用彼此堆叠在一起,因此在递归的中间,存在以下布局:

代码语言:javascript
复制
C:\a\very\long\path
subst K: "C:\a\very\long\path"

K:\another\very\long\path
subst L: "K:\another\very\long\path"

L:\yet\another\very\long\path
subst M: "L:\yet\another\very\long\path"

xcopy M:\*.* "D:\target"

这样,对于每个subst级别,都会生成一个更短的路径。这也意味着,您必须按顺序复制文件夹,以便能够在发出copy命令之前检查长路径。

复制文件夹中的所有文件后,递归将跳转到上一级(subst /d),从而释放一个驱动器号。

使用4-5个驱动器号,当路径变得很深时,它们相互替换。我已经能够复制长度超过MAX_PATH限制的路径。

编辑

本文描述了使用subst执行此操作的一般过程。你怎么做取决于你的需要,我总是以最小的方式使用这个小技巧,“解决这个单一的问题”。

例如,复制到同样深的目标路径意味着您需要另一堆替换的驱动器号。

在一个深度嵌套的单一目录结构中解压所有.zip文件可能只需要堆栈,但您需要稍微降低阈值,以考虑.zip中的文件夹等。

票数 2
EN

Stack Overflow用户

发布于 2008-10-25 15:06:22

Robocopy是Windows Resource Kit的一部分,它就是为处理这种情况而设计的。

票数 8
EN

Stack Overflow用户

发布于 2008-10-25 17:02:34

您想自己实现复制过程吗?如果有,你有没有尝试过UNC路径?我从来没有使用过它们,但简单地说,你可以使用前缀,路径可以比in this MSDN article描述的MAX_PATH长得多。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/236533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档