[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

需求是这样的
文件夹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. )
复制代码
怎么改

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

TOP

  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}}
复制代码
单层目录

TOP

本帖最后由 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
复制代码
不懂批处理 (逃

TOP

回复 7# yhcfsr
谢谢 用这个可以参考绿化软件 比对2个文件 删除新版本中新加

TOP

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

回复 3# smss

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

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

TOP

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

评分人数

    • smss: 谢谢 这个比对2个新老文件时给力 可以用这 ...技术 + 1

TOP

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

可以让2文件夹下的子文件中的文件也比较并做相同处理吗

TOP

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

TOP

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

不是从1复制到2
是比对1的文件名后2中有较新文件需保留下来
将文件夹2有而文件夹1没有的文件删除

TOP

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

评分人数

    • smss: 太牛了 对这个一无所知技术 + 1
QQ 33892006

TOP

返回列表