我正在尝试XCOPY
复制如下所示的目录:
-MainFolder
-ManyFoldersIWantToCopy
-ManyFoldersIWantToCopy
-...
-Source Code
我想使用该/EXCLUDE
选项来复制除 之外的每个文件夹Source Code
。
我尝试使用以下方法,但没有任何效果:
xcopy "Source" "Destination" /EXCLUDE:"\Source Code\" /E /C /R /I /K /Y
我收到的错误信息显示:Can't read file: "\Source Code\"
。
我尝试过将双引号全部删除,改用单引号,带/不带 \,但仍然收到相同的错误消息。
有任何想法吗?
答案1
C:\>xcopy /?
...
/EXCLUDE:file1[+file2][+file3]...
Specifies a list of files containing strings. Each string
should be in a separate line in the files. When any of the
strings match any part of the absolute path of the file to be
copied, that file will be excluded from being copied. For
example, specifying a string like \obj\ or .obj will exclude
all files underneath the directory obj or all files with the
.obj extension respectively.
您需要将“源代码”放在一个文件中,并在命令行中指定该文件。
答案2
我认为这个错误需要进一步解释。我发现这个博客文章关于这个问题非常有启发性。
基本上,您需要使用旧的 8.3(排除路径中的 DOS 短文件名)。您可以在将目录更改为文件夹的父级(您想要 8.3 名称)后,从命令提示符运行命令“DIR /X”来确定短名称。遗憾的是,MS 尚未更新此命令以支持长文件名。
如果您不想使用短路径/文件名,我建议您使用 robocopy。当然,我想您可以将长名称放在外部“excluded_files.txt”中。这似乎确实受 XCopy 支持。
答案3
我成功使用了 xcopy EXCLUDE 标志,而没有将行放在引号中,尽管许多路径包含空格。所以对我来说(Win7 Home Premium SP1 修复安装 DOS 提示符),回车符是足够的分隔符。我只是使用了纯文本文件,格式如下:
file 1.txt
path 2\file 2.text
and so on\and so forth.txt
然后将 EXCLUDE:F:\filename.txt 作为 xcopy 标志。我没有在排除文件的行中包含驱动器号(如 /? 页面中确认的,它只需要部分匹配)。它很快就跳过了命名的文件。我将其与 /D:09-21-2014 结合使用,成功仅获取最近的文件和大量其他标签。
需要确认的是,我没有使用旧的 DOS 短名称,这与 Ken Richard 上述的发现相反。