Board logo

标题: [文件操作] 批处理如何比较文件后删除多出文件? [打印本页]

作者: smss    时间: 2019-1-19 16:34     标题: 批处理如何比较文件后删除多出文件?

需求是这样的
文件夹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. )
复制代码
怎么改
作者: yhcfsr    时间: 2019-1-19 18:39

  1. robocopy "文件夹1" "文件夹2" /mir
复制代码

作者: smss    时间: 2019-1-19 19:05

本帖最后由 smss 于 2019-1-19 19:27 编辑
yhcfsr 发表于 2019-1-19 18:39

不是从1复制到2
是比对1的文件名后2中有较新文件需保留下来
将文件夹2有而文件夹1没有的文件删除
作者: flashercs    时间: 2019-1-19 19:19

回复 3# smss
  1. robocopy "文件夹1" "文件夹2" *.* /nocopy /purge
复制代码

作者: smss    时间: 2019-1-19 19:37

回复  smss
flashercs 发表于 2019-1-19 19:19

可以让2文件夹下的子文件中的文件也比较并做相同处理吗
作者: flashercs    时间: 2019-1-19 19:46

回复 5# smss
  1. robocopy "文件夹1" "文件夹2" *.* /nocopy /mir
复制代码

作者: yhcfsr    时间: 2019-1-19 19:54

本帖最后由 yhcfsr 于 2019-1-19 20:05 编辑

回复 3# smss

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

如果很介意这个副作用,可以按以下思路编程:
    1.先删除文件夹2中的独有文件.
    2.对文件夹1的文件进行判断,如果存在就用robocopy进行复制,robocopy会自动判断文件是否有更新(有则复制,无则跳过).
作者: smss    时间: 2019-1-19 20:31

回复 7# yhcfsr
谢谢 用这个可以参考绿化软件 比对2个文件 删除新版本中新加
作者: 523066680    时间: 2019-1-19 20:59

本帖最后由 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
复制代码
不懂批处理 (逃
作者: ivor    时间: 2019-1-20 10:40

  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}}
复制代码
单层目录
作者: 523066680    时间: 2019-1-20 12:08

大家对楼主的需求是不是有什么误解,楼主只提到delete




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2