批处理:复制满足包含和排除条件的文件

Luk*_*lch 2 iteration copy batch-file

我的要求是编写一个批处理脚本来比较两个文件夹中的文件.如果SourceFolder和TargetFolder中都存在文件,则使用SourceFolder中的文件覆盖TargetFolder中的文件.

使用for-statement和if语句我可以实现这个目的:

for /R %Source% %%G in (Prefix.*.ext) do (
    if exist %Target%%%~nxG (
        del %%G
        copy %Target%%%~nxG %Source% 
    ) 
)
Run Code Online (Sandbox Code Playgroud)

虽然附加要求是仅复制以"前缀"开头的文件.并以".ext"结尾,并排除包含"exclude"一词的所有文件.

在英语中:从该源文件夹中复制以"前缀"开头的所有文件,以".ext"结尾,不包含文本"exclude".并且已存在于目标文件夹中.

这是我被卡住的地方.有谁知道如何批量执行此操作?

And*_*rew 5

你可以用xcopy它.首先,我假设Prefix和ext是实际的字符串,使用变量代替你必须包装它们%Prefix%.

其次,您必须创建一个新的文本文件.excludes.txt将其命名并将其放在与批处理文件相同的目录中.(如果您不想创建批处理文件,则只需将其放在运行该命令时处于活动状态的目录中).此文件的唯一内容应该是没有引号或其他标记的EXCLUDE字符串.

好的,命令本身:

xcopy %Source%\Prefix.*.ext %Target% /U /EXCLUDE:excludes.txt
Run Code Online (Sandbox Code Playgroud)

要打破它:

  1. %Source%\Prefix.*.ext 选择源文件夹中以Prefix开头并以.ext结尾的文件
  2. %Target% 指定文件的目标
  3. /U 仅复制目标目录中已存在的文件
  4. /EXCLUDE:excludes.txt这将读入excludes.txt并排除与文件的任何部分匹配的任何excludes.txt文件.

而已!这可能比使用嵌套IF编写FOR语句更容易.