中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-28 18:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 将一文本文件与N个文本文件作比较,若与某文件内容相同则运 查看 3,676 回复 28
楼 主 将一文本文件与N个文本文件作比较,若与某文件内容相同则运 发表于 2005-03-17 00:00 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
大家好!请教各前辈我想在Dos 下编个批处理,将一个文本文件与N个文本文件作比较,若与某文件内容相同则运行一个与该文本文件相同文件名的批处理文件。
例:若X.txt与1.txt 内容相同则运行1.bat;
若X.txt与2.txt内容相同则运行2.bat。
请问该怎编?
2 发表于 2005-03-18 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
楼主你应该把要执行的批处理所对应的TXT文件列出来啊!不然谁知道有多少啊!是哪些啊
所以我就写了全面看能满足你的要求吗?
要比较的和比较的文件以及BAT文件都得放在一个目录下for %%a in (*.txt) do for %%b in (*.txt) do fc %%a %%b | find "找不到相异处" && %%~na.bat
http://www.msfans.net/bbs/
3 多谢 chenhui530 不好意思我写得不够清楚。 发表于 2005-03-18 00:00 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
我想写个批处理,DOS 7.1下将C:\X.txt 与D:\1.txt至99.txt 比较。其中1.txt至99.txt只有一个是与X.txt内容是相同的。
TEST.bat、1.txt至99.txt、1.bat 至99.bat 都在D:\
若X.TXT 与1.TXT内容相同则运行 1.BAT。
若X.TXT 与2.TXT内容相同则运行 2.BAT。
若X.TXT 与88.TXT内容相同则运行 88.BAT。
若X.TXT 与99.TXT内容相同则运行 99.BAT。
我写的TEST.bat 的内容
FOR %%C IN (*.TXT|) DO FC %%C C:\X.TXT
----------------------------------------------------------------
TEST.bat对比了那些文件,但要怎能才能运行那个对应的BAT呢? 请指教

4 发表于 2005-03-19 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
我没有98的FC你传个上来我好给你写出批处理来
http://www.msfans.net/bbs/
5 再次谢谢chebhui530的关注 发表于 2005-03-19 00:00 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
我是在DOS 7.1下使用的,这次上传的也是。
我这样试了一下也不行
----------------test.bat-----------
fc c:\x.txt d:\1.txt
if errorlevel 1 goto 2
if errorlevel 0 call 1.bat
:2
fc c:\x.txt d:\2.txt
if errorlevel 1 goto 3
if errorlevel 0 call 2.bat
:3
--------------------------------------
可是不管那两个文件是相同或有差异都是返回“0”。
6 发表于 2005-03-19 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
以下是引用quan_zhou在2005-3-19 14:08:43的发言:

我是在DOS 7.1下使用的,这次上传的也是。
我这样试了一下也不行
----------------test.bat-----------
fc c:\x.txt d:\1.txt
if errorlevel 1 goto 2
if errorlevel 0 call 1.bat
:2
fc c:\x.txt d:\2.txt
if errorlevel 1 goto 3
if errorlevel 0 call 2.bat
:3
--------------------------------------
可是不管那两个文件是相同或有差异都是返回“0”。

应该是这样的
if not errorlevel 1 echo find

http://www.msfans.net/bbs/
7 发表于 2005-03-19 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
你这样的批处理是不现实的!为了从100个文件中比较一个写了那么多的命令不好你把98的FC传给我我给你写一个批处理不要多长的代码就可以搞定
http://www.msfans.net/bbs/
8 发表于 2005-03-19 00:00 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
劳烦你了, chenhui530打开附件
9 发表于 2005-03-20 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
我在DOS7。1下试了FC。EXE怎么没返回值啊?
也许是我这有问题我把代码提供给你你自己改一点点就行了需要个第三方工具STRINGS有什么问题再反映因为我无法测试!STRINGS.com可以在软件站下载:kaishi
strings a=add %b%,1
if not exist %a% fc x.txt %a%.txt>fc.txt
find "相同时FC的代码" fc.txt
if not errorlevel 1 %a%.bat
strings b=add %a%,1
if %b%==101 goto end
goto kaishi:end
http://www.msfans.net/bbs/
10 发表于 2005-03-20 00:00 ·  中国 河北 保定 联通
初级用户
积分 165
发帖 28
注册 2004-08-09 00:00
21年会员
UID 29892
性别 男
状态 离线
DOS 7.1下的fc是不能用于批处理中的文件比较的,所以在这里必须引入第三方工具,我在网上找到了两个:filecomp和gscom。另外,使用md5sum或者fsum之类的工具,通过计算文件的md5或者crc32值也可以比较文件是否相同。另外,DOS 7.1下的for命令不支持等差序列的数字变量的产生,所以必须使用类似楼上的strings或者varset之类的第三方程序用来产生数字的顺序增加操作。基本上,楼上的程序只要换一下文件比较工具就可以了。
11 谢谢大家的关注!能否把FC.EXE 改成有返回值? 发表于 2005-03-21 00:00 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
谢谢大家的帮助!
我在DOS 7.1 下 不管两文件相同还是有差异都是返回0
请问我们能否更改FC.exe的返回值?
12 发表于 2005-03-21 00:00 ·  中国 湖南 长沙 电信
高级用户
★★
积分 772
发帖 273
注册 2004-10-23 00:00
21年会员
UID 32861
性别 男
状态 离线
在DOS 7.1下好像FC没返回值
http://www.msfans.net/bbs/
13 发表于 2005-03-21 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
楼上的“小石头”(也就是我的马甲)已经讲过了,就是因为DOS 7.1下的fc没有返回值,所以无法用于判断文件是否相同,所以我提供了另两个用于DOS下的文件比较工具,这两个工具都是有返回值的。gscmp的下载地址:http://www.programmersheaven.com/d/click.aspx?ID=F19947&URL=http%3A%2F%2Fwww.goldsealstudios.com%2Fcgi-bin%2Fdownload.pl%3fdl=gscmp.zipfilecomp的下载地址:http://www.programmersheaven.com/d/click.aspx?ID=F3062在本帖的环境中,我推荐使用gscmp,因为简单易用,而filecomp虽然功能更强,但使用起来也比较麻烦。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
14 发表于 2005-03-21 00:00 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
21年会员
UID 37149
性别 男
状态 离线
非常多谢大家的帮助!
我下了gscmp 在DOS7.1不能正常运行,提示该程序不能在DOS 方式下运行。
XP 的DOS 能正常运行。
Climbing 能否再次麻烦你给个能在DOS 7.1下运行的,谢谢!
15 发表于 2005-03-21 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
那就使用filecomp吧,我因为没有在DOS 7.1下试,从说明上看,这两个程序都是用于纯DOS环境的,所以想当然的以为都可以用于DOS 7.1环境,我觉得filecomp应该是没有问题的。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
论坛跳转: