我希望能够有选择地复制文件列表并保留它们的目录结构。问题是有相当多的文件的路径超过256个字符。这个问题通常是如何处理的?
编辑:我应该清楚地表明,我只想有选择地复制文件,而不是文件夹。我不认为robocopy可以有效地复制单个文件和它的文件夹结构。
发布于 2008-10-25 15:04:34
我编写了一个VBscript来检查路径长度,并在达到某个阈值时立即调用subst。这些调用彼此堆叠在一起,因此在递归的中间,存在以下布局:
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中的文件夹等。
发布于 2008-10-25 15:06:22
Robocopy是Windows Resource Kit的一部分,它就是为处理这种情况而设计的。
发布于 2008-10-25 17:02:34
您想自己实现复制过程吗?如果有,你有没有尝试过UNC路径?我从来没有使用过它们,但简单地说,你可以使用前缀,路径可以比in this MSDN article描述的MAX_PATH长得多。
https://stackoverflow.com/questions/236533
复制相似问题