首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >批处理:复制符合包含和排除条件的文件

批处理:复制符合包含和排除条件的文件
EN

Stack Overflow用户
提问于 2011-10-04 22:58:23
回答 2查看 5.1K关注 0票数 2

我的要求是编写一个批处理脚本来比较两个文件夹中的文件。如果文件同时存在于SourceFolder和TargetFolder中,那么用SourceFolder中的文件覆盖TargetFolder中的文件。

使用for-语句和if-语句,我可以实现以下目标:

代码语言:javascript
代码运行次数:0
运行
复制
for /R %Source% %%G in (Prefix.*.ext) do (
    if exist %Target%%%~nxG (
        del %%G
        copy %Target%%%~nxG %Source% 
    ) 
)

尽管另一项要求是只复制以“前缀”开头的文件。并以“.ext”结尾,并将所有包含“排除”字的文件排除在外。

在英文中:复制以‘前缀’开头的所有文件,以‘. text’结尾,不包含“排除”文本。并且已经存在于目标文件夹中。

这就是我被困的地方。有人知道如何成批地做这件事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-05 18:08:54

为此您可以使用xcopy。首先,我假设前缀和ext是实际的字符串,如果要使用变量,就必须像%Prefix%那样包装它们。

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

好的,命令本身:

代码语言:javascript
代码运行次数:0
运行
复制
xcopy %Source%\Prefix.*.ext %Target% /U /EXCLUDE:excludes.txt

要把它分解:

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

就这样!这可能比用嵌套的IF编写FOR语句更容易。

票数 5
EN

Stack Overflow用户

发布于 2011-10-06 00:26:43

在阅读了this SO question之后,我就这样做了。(在问题被回答之前)

代码语言:javascript
代码运行次数:0
运行
复制
pushd %Target%
attrib +h *Exclude
for /R %%G in (Prefix.*.ext) do (
    if exist %Target%%%~nxG (
        del %%G
        copy %Target%%%~nxG 
    ) 
)
attrib -h *Exclude
popd

xcopy解决方案看起来可能更好一些,不过如果我能帮忙的话,我希望不必创建(和删除)文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7654980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档