我正在尝试运行 xcopy 来复制不包括 .obj 等的文件。我看到的是,当我的 excludes.txt 文件包含 .obj 作为扩展名时,Microsoft.Practices.ObjectBuilder.dll 不会被复制。当 .obj 被删除时,我 Microsoft.Practices.ObjectBuilder.dll 被正确复制。但这不会发生在其他 dll 上。
有谁知道为什么会发生这种情况?
谢谢!
列尼克
我正在尝试运行 xcopy 来复制不包括 .obj 等的文件。我看到的是,当我的 excludes.txt 文件包含 .obj 作为扩展名时,Microsoft.Practices.ObjectBuilder.dll 不会被复制。当 .obj 被删除时,我 Microsoft.Practices.ObjectBuilder.dll 被正确复制。但这不会发生在其他 dll 上。
有谁知道为什么会发生这种情况?
谢谢!
列尼克
是的,xcopy 就是那样愚蠢。
做这个:
dir /b *.obj >excludes.txt
xcopy * /exclude:excludes.txt targetdir
尽管有时这仍然会出现问题。
例如,如果您有一个名为practice.obj的文件,它不会复制它,但它也无法复制您的 Microsoft。实践.ObjectBuilder.dll
一个方便的技巧是,如果您在 dir 上指定 /s,您将获得递归和完整路径,然后如果您在 xcopy 上完全指定源目录,则排除项必须从头开始匹配:
dir /s /b *.obj >excludes.txt
xcopy c:\sourcedir\* /exclude:excludes.txt \targetdir
现在 Microsoft.Practices.ObjectBuilder.dll 只有在您碰巧在同一目录中有 Microsoft.Practices.obj 文件时才会复制失败。得到它?
我猜是因为子字符串 .obj 在名称 Microsoft.Practices**.Obj**ectBuilder.dll 中找到,并且由于 windows 不区分大小写,因此它将排除它。
答案是您可以通过键入以下内容获得的信息:
xcopy /?
即:
/EXCLUDE:file1[+file2][+file3]...
指定包含字符串的文件列表。每个字符串应位于文件中的单独行中。当任何字符串与要复制的文件的绝对路径的任何部分匹配时,该文件将被排除在复制之外。例如,指定像 \obj\ 或 .obj 这样的字符串将分别排除目录 obj 下的所有文件或所有具有 .obj 扩展名的文件。