标题: [文本处理] 批处理TXT对比 覆盖 [打印本页]
作者: maxwell 时间: 2018-11-19 17:30 标题: 批处理TXT对比 覆盖
本帖最后由 maxwell 于 2018-11-20 09:33 编辑
当前存在两个同文件名.txt (假设为temp.txt)分别在 AA文件夹 另一个在BB 文件夹。
现在由于可能出现AA文件夹下的temp.txt 会和BB文件夹下的temp.txt内容出现差异:
那么需要的操作为:
1、当AA文件夹下的temp.txt有的数据 而BB 文件夹下temp.txt没有的数据就 拷贝过去
2、当AA文件夹下的temp.txt没有的数据,如果B 文件夹下的temp.txt中有 ,就不做操作。
上述有误: 重新描述下
当前存在两个同名.7z压缩包 (假设为temp.7z 压缩包内为同名temp.txt) 分别在 AA文件夹 另一个在BB 文件夹。
现在由于可能出现AA文件夹下的temp.7z内的temp.txt 会和BB文件夹下的temp.7z内的temp.txt内容出现差异:
那么需要的操作为:
1、当AA文件夹下的temp.7z中的temp.txt有的数据 而BB 文件夹下的temp.7z中的temp.txt没有的数据就 拷贝过去
2、当AA文件夹下的temp.7z中的temp.txt没有的数据,如果BB 文件夹下的temp.7z中的temp.txt中有 ,就不做操作。
3、当AA文件夹下无temp.7z 压缩包。则不进行任何操作
作者: yhcfsr 时间: 2018-11-19 18:03
本帖最后由 yhcfsr 于 2018-11-19 18:08 编辑
简化为一句:AA,BB中的同名文件,如果BB中该文件大小为0,复制AA中同名文件到BB.
下面的脚本有个缺陷,如果AA中存在子目录,则子目录与BB中的同名文件不会处理.- set "AA=D:\TEST\a"
- set "BB=D:\TEST\b"
- for /r "%BB%" %%a in (*) do if %%~za==0 (
- if exist "%AA%\%%~nxa" copy "%AA%\%%~nxa" "%%a" /y
- )
复制代码
作者: Batcher 时间: 2018-11-19 21:08
回复 2# yhcfsr
猜测楼主是要逐行比较文件内容,而不是文件是否为空。
作者: Batcher 时间: 2018-11-19 21:14
- @echo off
- findstr /v /x /g:BB\temp.txt AA\temp.txt > temp.tmp
- type temp.tmp >> BB\temp.txt
复制代码
作者: maxwell 时间: 2018-11-20 09:26
回复 4# Batcher
对的 朋友 我是需要逐行对比,还有一点我忘记说明了; 这个temp.txt 实际是被压缩到同名压缩包中的,格式为.7z
即需要注意的是:
1、当AA文件夹下的temp.7z中的temp.txt有的数据 而BB 文件夹下的temp.7z中的temp.txt没有的数据就 拷贝过去
2、当AA文件夹下的temp.7z中的temp.txt没有的数据,如果B 文件夹下的temp.7z中的temp.txt中有 ,就不做操作。
3、当AA文件夹下无temp.7z 压缩包。则不进行任何操作。
作者: maxwell 时间: 2018-11-20 09:34
回复 2# yhcfsr
朋友,不是比对是否为空
作者: Batcher 时间: 2018-11-20 13:12
回复 5# maxwell
temp.7z中除了temp.txt还有其它文件吗?
还有需要明确一下拷贝什么东西过去:
把AA文件夹下的temp.7z拷贝到BB文件夹下?
把AA文件夹下的temp.7z的temp.txt拷贝到BB文件夹下?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |