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

[文件操作] 批处理怎样实现多级目录下文件对比?

大家好,
最近研究文件对比的脚本,不知道批处理能不能实现该功能,我觉得应该可以,但是学疏才浅不知道该如何写,请教各位。
目的:
实现多级目录下文件对比。
例如:
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
我一直会关注该贴
学习中。。。

有知道的帮忙给看一下
学习中。。。

TOP

本帖最后由 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
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

我先看看,谢谢啊
学习中。。。

TOP

谢谢啊,输出结果比我的好看
您看能不能输出结果里面,去掉FC本身打印的信息啊。
我查了一下FC的参数,好像没有。不知道如何解决,版主真是高手啊,我怎么就没有想到。看来FOR DO命令不行啊
学习中。。。

TOP

已经用 >nul 2>nul 屏蔽了
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 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
复制代码
1

评分人数

    • CrLf: 新发现!技术 + 1

TOP

回复 7# Hello123World


    不可思议,这又是什么毛病...逻辑连接符后跟的语句输出为什么会被当成预处理回显?想不通

TOP

回复 8# CrLf

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

TOP

返回列表