Board logo

标题: [文件操作] 批处理怎样实现多级目录下文件对比? [打印本页]

作者: 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 编辑
  1. @echo off
  2. (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
&& ,||是根据前面的语句成功与否选择执行下一条语句。
  1. fc /b 1.txt ah.txt && @echo hello || @echo no
  2. pause
复制代码
这两个文件不同,也没有显示no,为什么?(第一问已解决)

竟然是@的问题,这又为什么,我关闭的只是echo 本身的回显,为什么no没有输出?
  1. fc /b 1.txt ah.txt && echo hello || echo no
  2. pause
复制代码

作者: CrLf    时间: 2011-8-13 17:07

回复 7# Hello123World


    不可思议,这又是什么毛病...逻辑连接符后跟的语句输出为什么会被当成预处理回显?想不通
作者: Hello123World    时间: 2011-8-13 17:19

回复 8# CrLf

看他的回显,似乎&&后面的语句都被和谐了,可为什么又被和谐了呢?
  1. C:\Users\helloworld\Desktop>fc /b 1.txt ah.txt   &&
复制代码





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