标题: [文件操作] 批处理怎样实现多级目录下文件对比? [打印本页]
作者: wanglei8312 时间: 2011-8-12 16:23 标题: 批处理怎样实现多级目录下文件对比?
大家好,
最近研究文件对比的脚本,不知道批处理能不能实现该功能,我觉得应该可以,但是学疏才浅不知道该如何写,请教各位。
目的:
实现多级目录下文件对比。
例如:
C:\SRC目录下面有B,C,D,E3个目录,B,C,D,E目录下面分别有1_dhcp.sql,2_dhcp.sql...n,
C:\OUT目录下面也有B,C,D,E3个目录,B,C,D,E目录下面分别有1_dhcp.sql,2_dhcp.sql...n,
对比SRC,OUT目录下面的文件是否相同,输入到一个文件中,查看对比结果。
对比结果格式:
1_dhcp.sql 相同
2_dhcp.sql 不同
。。。。。。N。
说明一下:
SRC,OUT目录下的1_dhcp.sql文件的内容,就是一些sql语句,我想要对比这两个sql语句是否相同,如果不相同就输出“不同”
fc命令就可以对比两个文件是否相同,fc /B file1.txt file2.txt,但是对比结果格式不是我想要的。
文件对比结果,希望类似于beyond compare逐行对比,如果遇到不一样的值,输出的结果就是“不同”,如果文件相同,输出结果“相同”
难点:
1.现在关键问题是不知道如何实现多级目录下的文件对比。
2.结果格式如何来实现。
备注:
如果有描述不清的地方,随时联系mail:leig@sian.cn
我一直会关注该贴
作者: wanglei8312 时间: 2011-8-12 16:32
有知道的帮忙给看一下
作者: hanyeguxing 时间: 2011-8-12 16:43
本帖最后由 hanyeguxing 于 2011-8-12 17:15 编辑
- @echo off
- (for %%a in ("C:\SRC\*.sql") do ((fc /b "%%a" "C:\OUT\%%~nxa">nul 2>nul)&&echo %%~nxa 相同||echo %%~nxa 不同))>>输出.txt
复制代码
作者: wanglei8312 时间: 2011-8-12 16:45
我先看看,谢谢啊
作者: wanglei8312 时间: 2011-8-12 17:00
谢谢啊,输出结果比我的好看
您看能不能输出结果里面,去掉FC本身打印的信息啊。
我查了一下FC的参数,好像没有。不知道如何解决,版主真是高手啊,我怎么就没有想到。看来FOR DO命令不行啊
作者: hanyeguxing 时间: 2011-8-12 17:27
已经用 >nul 2>nul 屏蔽了
作者: Hello123World 时间: 2011-8-13 16:53
本帖最后由 Hello123World 于 2011-8-13 17:03 编辑
回复 3# hanyeguxing
&& ,||是根据前面的语句成功与否选择执行下一条语句。- fc /b 1.txt ah.txt && @echo hello || @echo no
- pause
复制代码
这两个文件不同,也没有显示no,为什么?(第一问已解决)
竟然是@的问题,这又为什么,我关闭的只是echo 本身的回显,为什么no没有输出?- fc /b 1.txt ah.txt && echo hello || echo no
- pause
复制代码
作者: CrLf 时间: 2011-8-13 17:07
回复 7# Hello123World
不可思议,这又是什么毛病...逻辑连接符后跟的语句输出为什么会被当成预处理回显?想不通
作者: Hello123World 时间: 2011-8-13 17:19
回复 8# CrLf
看他的回显,似乎&&后面的语句都被和谐了,可为什么又被和谐了呢?- C:\Users\helloworld\Desktop>fc /b 1.txt ah.txt &&
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |