5

我有一个目录,我想使用 Robocopy.exe 将其复制到另一个目录。

我的计划是从源目录的根目录中排除一些文件。事实上,我只想从目录的根目录中排除 .html 文件。

诀窍是我目前正在使用 /E ,这也导致所有子文件夹也被处理。

因此,我目前的操作结果是,如果我使用:

/E /XF "*.html"

我将排除站点范围内的所有 HTML 文件。

有没有一种方法可以让我继续复制所有子文件夹,但也可以使用 XF 从根目录中排除 .html 文件?

就像是:

/E /XF "c:\releases\website_source\*.html"
4

2 回答 2

4

好的,所以没有真正的理由,我必须找到一种方法来回答这个问题。

我只能找到一种使用 powershell 的“体面”方式,它仍然很乱。

因此,首先,编辑以下 powershell 以满足您的需求:

$files = Get-ChildItem c:\releases\website_source -Filter {*.html}
"/XF" > c:\temp\exclude.rcj
foreach ($f in $files) {$f.FullName >> c:\temp\exclude.rcj}

这会在 robocopy“作业”文件中的 /XF 命令之后创建文件列表。然后像往常一样调用您的 robocopy 命令,但添加/job:c:\temp\exclude.rcj到它的末尾。这基本上将使每个根 HTML 文件的复杂 /XF 更易于在脚本中编写。

请注意,您可以使用批处理文件执行上述操作,但我最好使用 powershell 然后批处理循环等。

是的,我意识到在这一点上这是一个有点过时的问题,但我需要做点什么。

于 2012-09-02T03:54:30.847 回答
4

我的解决方案是不雅的,但很容易理解。我只需使用两行批处理文件执行任务。Robocopy 根文件夹(但不包括子目录) - 包括 .html 文件。然后下一行 Robocopy 包括所有子(不包括 *.html)

于 2012-10-08T12:24:51.687 回答