Board logo

标题: 批处理能不能实现这样的功能??? [打印本页]

作者: 酷星河     时间: 2005-1-27 00:00    标题: 批处理能不能实现这样的功能???


比较 d:\123\1.txt 与\\server\123\1.txt
内容相同就运行d:\123\1.exe 不同就运行\\server\123\2.exe
能的话请告诉我下怎么实现
谢谢
作者: Climbing     时间: 2005-1-28 00:00
@echo off
fc d:\123\1.txt \\server\123\1.txt  > nul
if errorlevel 1 goto _runserver
if errorlevel 0 goto _runlocal
goto _quit
:_runserver
\\server\123\2.exe
goto _quit
:_runlocal
d:\123\1.exe
:_quit上面的例子中使用fc来进行文件的比较,当然,你可以使用CRC或者md5sum之类的工具来计算两个文件的校验值是否相同来比较文件是不是相同。另外,提醒你写好帖子标题。
作者: JonePeng     时间: 2005-1-29 00:00
Climbing大哥:我发现在Win98下的FC不管是两个文件相同与否,其返回值都为0,岂不判断错误?
作者: crshen     时间: 2005-1-29 00:00
狭义的批处理是指用DOS内部命令(如copy、dir)及for、goto等批处理命令组成的命令序列。广义的批处理指按一定要求调用多个外部文件,只要外部命令支持的操作,批处理就能实现。上面的例子中,完全可以自己编写一个程序,按两个文件相同与否,返回不同的值,然后用if errorlevel 处理。
作者: JonePeng     时间: 2005-1-29 00:00
哈哈,批处理也有狭义和广义之分啊。我一向认为只有简单和复杂之分。crshen:你的意思是编写一个更完善的FC?我支持你!握握手先……[em31]
作者: crshen     时间: 2005-2-1 00:00


  Quote:
以下是引用JonePeng在2005-1-29 22:46:53的发言:
crshen:你的意思是编写一个更完善的FC?
我支持你!握握手先……

今天抽空写了个专门进行文本文件比较的小程序,使用方法:

fc.exe file1 file2     ;对file1和file2进行逐字节比较

fc.exe file1 file2 /blank       ;对两个文件比较时,忽略所有空格,如“abcd ”和“a  bc  d”相同。

比较后,返回1表示两个文件相同,返回0表示有差异,返回2表示程序运行遇到错误。

内有测试文件。打开附件

[此贴子已经被作者于2005-2-1 16:30:15编辑过]



作者: JonePeng     时间: 2005-2-1 00:00
好棒![em17][em17][em17] 而且能比较大于64K的文件。不知是用什么编译器?
P.S.:返回信息“Two files are NOT eaqule!”最后的单词错了,应该是equal。

[此贴子已经被作者于2005-2-1 15:24:15编辑过]



作者: crshen     时间: 2005-2-1 00:00
谢谢JonePeng,已修正错误,重新上传。我用的是turbo c 2.0编译的,感觉二进制比较功能好像在批处理中一般不会用到,所以没有加进去,以减小程序体积。不知道大侠有没有其它建议?
作者: willsort     时间: 2005-2-1 00:00
Re crshen:
    刚下载,还没有测试,先给几个功能上的建议吧,仅作参考。二进制比较在批处理中应用还是比较广泛的,比如比较两个磁盘镜像文件、比较多个图片中的相同图片,下面的建议是针对于二进制比较的。
    1、增加多文件的比较,例如比较一大堆图片中所有相似的图片;
    2、增加文件相似指数,比如两个文件有80%的相似率;
    3、增加文件更新比较,比如两个WORD文档,哪个文件更新;
    4、提高文件比较速度,选用非逐字节比较算法,比如分别产生MD5后比较。
    祝你成功!

[此贴子已经被作者于2005-2-1 19:43:34编辑过]