标题: [文件操作] 批处理如何比较文件后删除多出文件? [打印本页]
作者: smss 时间: 2019-1-19 16:34 标题: 批处理如何比较文件后删除多出文件?
需求是这样的
文件夹1下有若干文件夹和文件
文件夹2下有若干文件夹和文件
文件夹1和文件夹2内容有重复
只保留文件夹2下与文件夹1重复内容,删除文件2中独有文件
思路是获取文件夹1所有文件名
对比后删除 还要改下- for /d %%i in (*) do (
- echo "指定文件名 指定文件名"|findstr /c:"%%i">nul 2>nul&&echo %%i符合跳过||rd /s/q %%i
- )
复制代码
怎么改
作者: yhcfsr 时间: 2019-1-19 18:39
- 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 - 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 - 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,筛选包含 “*多余文件” 的项,批量删除(测试阶段建议转移备份)。- robocopy B A /MIR /L /FP /NDL /NS /NJS /NJH
复制代码
结果示例(当然我实际用的别的目录名)- 新文件 D:\Temp\robotest\Cairo-1.106\新建 Microsoft Office Visio 绘图.vsd
- *多余文件 D:\Temp\robotest\B\examples\glyph-text.pl
复制代码
不懂批处理 (逃
作者: ivor 时间: 2019-1-20 10:40
- $path2 = 'C:\Users\robotwu\Desktop\script\2'
- $path1 = 'C:\Users\robotwu\Desktop\script\1'
- 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://bathome.net./) |
Powered by Discuz! 7.2 |