找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33698|回复: 10

[文件操作] 批处理如何比较文件后删除多出文件?

[复制链接]
发表于 2019-1-19 16:34:18 | 显示全部楼层 |阅读模式
需求是这样的
文件夹1下有若干文件夹和文件
文件夹2下有若干文件夹和文件

文件夹1和文件夹2内容有重复

只保留文件夹2下与文件夹1重复内容,删除文件2中独有文件

思路是获取文件夹1所有文件名
对比后删除 还要改下
  1. for /d %%i in (*) do (
  2. echo "指定文件名 指定文件名"|findstr /c:"%%i">nul 2>nul&&echo %%i符合跳过||rd /s/q %%i
  3. )
复制代码
怎么改
发表于 2019-1-19 18:39:04 | 显示全部楼层
  1. robocopy "文件夹1" "文件夹2" /mir
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 太牛了 对这个一无所知

查看全部评分

 楼主| 发表于 2019-1-19 19:05:21 | 显示全部楼层
本帖最后由 smss 于 2019-1-19 19:27 编辑
yhcfsr 发表于 2019-1-19 18:39

不是从1复制到2
是比对1的文件名后2中有较新文件需保留下来
将文件夹2有而文件夹1没有的文件删除
发表于 2019-1-19 19:19:01 | 显示全部楼层
回复 3# smss
  1. robocopy "文件夹1" "文件夹2" *.* /nocopy /purge
复制代码
 楼主| 发表于 2019-1-19 19:37:26 | 显示全部楼层
回复  smss
flashercs 发表于 2019-1-19 19:19

可以让2文件夹下的子文件中的文件也比较并做相同处理吗
发表于 2019-1-19 19:46:42 | 显示全部楼层
回复 5# smss
  1. robocopy "文件夹1" "文件夹2" *.* /nocopy /mir
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 谢谢 这个比对2个新老文件时给力 可以用这 ...

查看全部评分

发表于 2019-1-19 19:54:15 | 显示全部楼层
本帖最后由 yhcfsr 于 2019-1-19 20:05 编辑

回复 3# smss

这个的确有部分不符合你的要求.
它的工作原理是这样的:
    1.复制将文件夹1的独有文件(包含更新过的文件)复制到文本夹2;
    2.文件夹1与文件夹2完全相同的文件不复制.
    3.删除文件夹2的独有文件;
这个命令会实现你的要求,但会有一些副作用,文件夹1中的一些独有文件会被复制到文件夹2

如果很介意这个副作用,可以按以下思路编程:
    1.先删除文件夹2中的独有文件.
    2.对文件夹1的文件进行判断,如果存在就用robocopy进行复制,robocopy会自动判断文件是否有更新(有则复制,无则跳过).
 楼主| 发表于 2019-1-19 20:31:37 | 显示全部楼层
回复 7# yhcfsr
谢谢 用这个可以参考绿化软件 比对2个文件 删除新版本中新加
发表于 2019-1-19 20:59:41 | 显示全部楼层
本帖最后由 523066680 于 2019-1-19 21:23 编辑

这个以前写过,

两个粗糙的方案:
1. for 遍历目录2 if exists 判断目录1是否存在相同文件,做一些字符替换处理或者用一些批处理的技巧进行对比
2. Robocopy 的日志参数/L可以只列出预测的处理结果而不进行复制删除操作,其中多余的文件会有标记。
    然后遍历这个LOG,筛选包含 “*多余文件” 的项,批量删除(测试阶段建议转移备份)。
  1. robocopy B A /MIR /L /FP /NDL /NS /NJS /NJH
复制代码
结果示例(当然我实际用的别的目录名)
  1.             新文件                            D:\Temp\robotest\Cairo-1.106\新建 Microsoft Office Visio 绘图.vsd
  2.           *多余文件                           D:\Temp\robotest\B\examples\glyph-text.pl
复制代码
不懂批处理 (逃
发表于 2019-1-20 10:40:43 | 显示全部楼层
  1. $path2 = 'C:\Users\robotwu\Desktop\script\2'
  2. $path1 = 'C:\Users\robotwu\Desktop\script\1'
  3. dir * -File -path $path2 | % {if (Test-Path ($p1 = (-join($path1,"",$_.Name)))){ (Copy-Item $p1 $_.FullName -Verbose)}else{Remove-Item $_.FullName -Verbose}}
复制代码
单层目录
发表于 2019-1-20 12:08:18 | 显示全部楼层
大家对楼主的需求是不是有什么误解,楼主只提到delete
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 00:02 , Processed in 0.022537 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表