中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 14:01
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » 将一文本文件与N个文本文件作比较,若与某文件内容相同则运
可打印版本  4,257 / 28
第1楼 quan_zhou 发表于 2005-03-17 00:00
初级用户 发帖 40 积分 190
将一文本文件与N个文本文件作比较,若与某文件内容相同则运
大家好!请教各前辈我想在Dos 下编个批处理,将一个文本文件与N个文本文件作比较,若与某文件内容相同则运行一个与该文本文件相同文件名的批处理文件。
例:若X.txt与1.txt 内容相同则运行1.bat;
若X.txt与2.txt内容相同则运行2.bat。
请问该怎编?
第2楼 chenhui530 发表于 2005-03-18 00:00
高级用户 发帖 273 积分 772
楼主你应该把要执行的批处理所对应的TXT文件列出来啊!不然谁知道有多少啊!是哪些啊
所以我就写了全面看能满足你的要求吗?
要比较的和比较的文件以及BAT文件都得放在一个目录下for %%a in (*.txt) do for %%b in (*.txt) do fc %%a %%b | find "找不到相异处" && %%~na.bat
第3楼 quan_zhou 发表于 2005-03-18 00:00
初级用户 发帖 40 积分 190
多谢 chenhui530 不好意思我写得不够清楚。
我想写个批处理,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楼 chenhui530 发表于 2005-03-19 00:00
高级用户 发帖 273 积分 772
我没有98的FC你传个上来我好给你写出批处理来
第5楼 quan_zhou 发表于 2005-03-19 00:00
初级用户 发帖 40 积分 190
再次谢谢chebhui530的关注
我是在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楼 chenhui530 发表于 2005-03-19 00:00
高级用户 发帖 273 积分 772
以下是引用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

第7楼 chenhui530 发表于 2005-03-19 00:00
高级用户 发帖 273 积分 772
你这样的批处理是不现实的!为了从100个文件中比较一个写了那么多的命令不好你把98的FC传给我我给你写一个批处理不要多长的代码就可以搞定
第8楼 quan_zhou 发表于 2005-03-19 00:00
初级用户 发帖 40 积分 190
劳烦你了, chenhui530打开附件
第9楼 chenhui530 发表于 2005-03-20 00:00
高级用户 发帖 273 积分 772
我在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
第10楼 小石头 发表于 2005-03-20 00:00
初级用户 发帖 28 积分 165
DOS 7.1下的fc是不能用于批处理中的文件比较的,所以在这里必须引入第三方工具,我在网上找到了两个:filecomp和gscom。另外,使用md5sum或者fsum之类的工具,通过计算文件的md5或者crc32值也可以比较文件是否相同。另外,DOS 7.1下的for命令不支持等差序列的数字变量的产生,所以必须使用类似楼上的strings或者varset之类的第三方程序用来产生数字的顺序增加操作。基本上,楼上的程序只要换一下文件比较工具就可以了。
第11楼 quan_zhou 发表于 2005-03-21 00:00
初级用户 发帖 40 积分 190
谢谢大家的关注!能否把FC.EXE 改成有返回值?
谢谢大家的帮助!
我在DOS 7.1 下 不管两文件相同还是有差异都是返回0
请问我们能否更改FC.exe的返回值?
第12楼 chenhui530 发表于 2005-03-21 00:00
高级用户 发帖 273 积分 772
在DOS 7.1下好像FC没返回值
第13楼 Climbing 发表于 2005-03-21 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
楼上的“小石头”(也就是我的马甲)已经讲过了,就是因为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楼 quan_zhou 发表于 2005-03-21 00:00
初级用户 发帖 40 积分 190
非常多谢大家的帮助!
我下了gscmp 在DOS7.1不能正常运行,提示该程序不能在DOS 方式下运行。
XP 的DOS 能正常运行。
Climbing 能否再次麻烦你给个能在DOS 7.1下运行的,谢谢!
第15楼 Climbing 发表于 2005-03-21 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
那就使用filecomp吧,我因为没有在DOS 7.1下试,从说明上看,这两个程序都是用于纯DOS环境的,所以想当然的以为都可以用于DOS 7.1环境,我觉得filecomp应该是没有问题的。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023