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".并且已存在于目标文件夹中.
这是我被卡住的地方.有谁知道如何批量执行此操作?
你可以用xcopy它.首先,我假设Prefix和ext是实际的字符串,使用变量代替你必须包装它们%Prefix%.
其次,您必须创建一个新的文本文件.excludes.txt将其命名并将其放在与批处理文件相同的目录中.(如果您不想创建批处理文件,则只需将其放在运行该命令时处于活动状态的目录中).此文件的唯一内容应该是没有引号或其他标记的EXCLUDE字符串.
好的,命令本身:
xcopy %Source%\Prefix.*.ext %Target% /U /EXCLUDE:excludes.txt
Run Code Online (Sandbox Code Playgroud)
要打破它:
%Source%\Prefix.*.ext 选择源文件夹中以Prefix开头并以.ext结尾的文件%Target% 指定文件的目标/U 仅复制目标目录中已存在的文件/EXCLUDE:excludes.txt这将读入excludes.txt并排除与文件的任何部分匹配的任何excludes.txt文件.而已!这可能比使用嵌套IF编写FOR语句更容易.