【问题标题】:xcopy /exclude issuexcopy /排除问题
【发布时间】:2010-09-16 22:09:58
【问题描述】:

我正在尝试运行 xcopy 来复制不包括 .obj 等的文件。 我看到的是,当我的 excludes.txt 文件包含 .obj 作为扩展名时,不会复制 Microsoft.Practices.ObjectBuilder.dll 。当 .obj 被删除时,我 Microsoft.Practices.ObjectBuilder.dll 被正确复制。不过,这不会发生在其他 dll 上。

有人知道为什么会这样吗?

谢谢!

列尼克

【问题讨论】:

    标签: windows batch-file xcopy


    【解决方案1】:

    是的,xcopy 就是这么笨。

    这样做:

    dir /b *.obj >excludes.txt
    xcopy * /exclude:excludes.txt targetdir
    

    虽然有时这仍然会出现问题。

    例如,如果您有一个名为 practices.obj 的文件,它不会复制该文件,但也无法复制您的 Microsoft。Practices.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 文件时才会复制失败。明白了吗?

    【讨论】:

      【解决方案2】:

      我猜是因为子字符串 .obj 是在名称 Microsoft.Practices**.Obj**ectBuilder.dll 中找到的,并且由于 windows 不区分大小写,所以它将排除它。

      【讨论】:

      • 感谢安德烈! MS Doc 与实际发生的情况相矛盾:“如果指定字符串“.obj”,则排除所有扩展名为 .obj 的文件。”好奇是否有办法解决这个问题......
      • 你在哪里复制你看到的 .obj 文件?
      • 我从根目录递归复制——我需要包含 .asmx、.configs 等,但我想跳过中间文件。
      【解决方案3】:

      XCOPY 现在是deprecated,所以我怀疑事情会得到解决。看看 ROBOCOPY - 它内置于 Vista 中,并包含在 2003 and XP 的资源工具包中。

      【讨论】:

        【解决方案4】:

        答案是您可以通过键入获得的内容:

        xcopy /?
        

        即:

        /排除:file1[+file2][+file3]...
        指定包含字符串的文件列表。每个字符串 应该在文件中的单独行中。当任何一个 字符串匹配文件绝对路径的任何部分 复制,该文件将被排除在复制之外。为了 例如,指定像 \obj\ 或 .obj 这样的字符串将排除 目录下的所有文件 obj 或所有文件 .obj 扩展名。

        【讨论】:

        • @gizmo - 公平地说,对于 Lenik,从 xcopy /exclude 帮助文本中我不会说 RTFM 让它更清晰,尤其是最后一句话,从我的阅读来看,它非常具体. “绝对路径的任何部分”不一定等同于文件名的任何部分。
        • 是的,太棒了!所以我被否决只是因为人们无法理解 5 行的解释。随着时间的推移,Stackoverflow 变得越来越有价值……而且仍处于测试阶段。
        猜你喜欢
        • 2012-06-27
        • 2013-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多