中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 将一文本文件与N个文本文件作比较,若与某文件内容相同则运
« [1] [2] »
作者:
标题: 将一文本文件与N个文本文件作比较,若与某文件内容相同则运 上一主题 | 下一主题
quan_zhou
初级用户




积分 190
发帖 40
注册 2005-3-17
状态 离线
『第 16 楼』:  老是麻烦大家,真不好意思,STRINGS哪用下载?

Compfile DOS能正常使用。非常感谢!
请问大家能否提供Strings/Varset哪能下载, 我找了几天都下载不了。

[此贴子已经被作者于2005-3-22 14:01:59编辑过]




2005-3-22 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 17 楼』:  

varset到Horst的主页下载。用google搜索:Horst varsetHorst Schaeffer的主页:http://home.nikocity.de/horst.muc/int/
Bart的主页:http://www.nu2.nu
我常用的命令行工具请在这里下载:Climbing常用的DOS命令行工具压缩安装包(11M左右)




偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2005-3-22 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
32211001
初级用户




积分 141
发帖 11
注册 2004-9-30
状态 离线
『第 18 楼』:  



  Quote:
我常用的命令行工具请在这里下载:Climbing常用的DOS命令行工具压缩安装包(11M左右)

先谢谢climbing,再问一下:好人做到底吧,请问climing是不是大概写个注释出来啊?要不怎么用啊?

2005-3-22 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 19 楼』:  

没法满足你这种要求(这几乎可以算是无理要求),我的安装包中大概有几百个程序,我不可能一一为这些程序写说明作注释,大部分程序你可以通过运行加/?参数(或者-h, --help)来获得帮助,不明白的你就不要用,还有很多程序的说明文档就在其所在目录下的同名txt文件中。请楼上搞清楚,别人没有义务去手把手教你做什么,很多时候学东西是要靠自己的努力的。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2005-3-23 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
quan_zhou
初级用户




积分 190
发帖 40
注册 2005-3-17
状态 离线
『第 20 楼』:  

我把Chehui530的代码改了一下,功能基本上实现了,但总是觉得不是很完善。
如果我的那引些txt、bat的文件名不是数字的,而是随机的英文字母,请问各位前辈那
又要怎么写?
我的内容如下:
TEST.bat
------------------------
@echo off
:start
string a=add %b%,1
compfile d:\mods.log %a%.log /v /a /s
if errorlevel 128 goto bat
if errorlevel 64 goto reture
:reture
string b=add %b%,1
goto start
if %b%==101 goto end
:bat
call %a%.bat

:end

2005-3-23 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『第 21 楼』:  

要是是随即数很难



http://www.msfans.net/bbs/
2005-3-23 00:00
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 22 楼』:  

Re chenhui530:  这不是随机数的问题,而是文件遍历的问题,也就是说,楼主想实现与任意名字的log文件比较,这用for就足够了。如果操作比较复杂,可以在for内Call它的字程序即可。  至于比较,FC完全可以用,用FIND查找FC的输出是否包含文件不存在相异的字串即可,你不是已经这样用了吗?  所以说,这个程序目前可以不需要第三方程序辅助,就可以满足楼主的要求了。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-3-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『第 23 楼』:  

to willsortwillsort兄好像不使用第三方工具不能完成哦!也许是我知识有限吧!请willsort兄公布出完美的程序给大家学习



http://www.msfans.net/bbs/
2005-3-24 00:00
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 24 楼』:  

willsort这回是犯错误了,DOS 7.1下的fc是根本没有这种功能的。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2005-3-24 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 25 楼』:  

Re chenhui530:
    想差了一点,关键的问题在于获得文件的主文件名,这一点for很难完成,所以改用文件遍历循环。
    关于文件遍历,如果你仔细看过我曾发过的关于文件遍历的帖子的话,便会明白这个程序只是那些程序的一个变形而已。他们都利用了一类从文本文件根据行、列/单词的地址获取的单词串的算法,即利用debug 生成一个不含回车的命令行前缀,然后链入文本中进行处理。利用此类方法,也可以获取文件的扩展名、完整路径、所在目录、文件大小、日期时间、文件属性等信息,甚至也可以获得我们在XP下很难获得的相对路径,但是算法的复杂度和效率都降低了其实用性。这样,你能更加体会到我的无奈了吧。
Re quan_zhou:
    程序要求在命令行执行,因为你的设计需求不明确,所以使用了命令行参数确定比较文件。比如:
    cmprcall c:\x.txt d:\ log
    这就是将c:\x.txt与d:\下的所有.log文件比较了。
    对于你的设计初衷有些建议,关于目标匹配与执行,我建议使用单独的批处理程序,而不是根据匹配调用多个批处理,这样可以节约硬盘空间开销,同时一定程度上可以简化程序,当然如果你有特别的需要必须如此实现,那么例外。另外,那个test.bat也有些问题,比如if %b%==101 goto end永不被执行,变量%b%每次递增2等等。
Re climbing:
    DOS/Win9x的FC确实不返回errorlevel,但是FIND返回,所以可以用FIND鉴定FC的比对结果。我早期的文件遍历程序便曾如此用过,
chenhui530兄也曾如此用在了NT环境下的程序中,当然,那是不必要的。不知你是否另有所指?

  Quote:
:: CmprCall.bat - 将一文件与一组文件比较,执行对应的批处理
:: Will Sort - 11:54 2005-3-24
:: 程序稍作修改,可以改为其他名字使用了
@echo off
if "%1"=="$" goto %2
if "%3"=="" goto end
set src=%1
:MakeList
dir %2.\*.%3 | find /i " %3 ">~visit.lst
:MakePreLine
echo %0 $ Compare             > ~visit.pre
for %%c in (rcx 17 w q) do echo %%c>> ~visit.asd
debug ~visit.pre < ~visit.asd > nul
rem if [%OS%]==[Windows_NT] chcp 936 > nul
:LoopVisit
copy /a ~visit.pre+~visit.lst ~visit.bat > nul
call ~visit.bat
if not "%matched%"=="" goto Clear
find "%0 $ Compare " /v < ~visit.bat > ~visit.lst
goto LoopVisit
:Compare
if "%3"=="" set matched=!failed!
if "%3"=="" goto end
if not exist d:\%3.bat goto end
fc %src% d:\%3.%4 | find "FC: no differences encountered">nul
if not errorlevel 1 call %3.bat
if not errorlevel 1 set matched=!success!
goto end
:Clear
del ~visit.*
set matched=
set src=
:End

[此贴子已经被作者于2005-3-24 14:11:31编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-3-24 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chenhui530
高级用户





积分 772
发帖 273
注册 2004-10-23
状态 离线
『第 26 楼』:  

to willsort我不会使用debug对你的这个程序也是真的看得不太懂!willsort兄能作解释下吗?



http://www.msfans.net/bbs/
2005-3-24 00:00
查看资料  发送邮件  发短消息 网志  OICQ (77740821)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 27 楼』:  

Re willsort:是的,是我错了,我没有发现DOS7.1下的fc比较相同的文件后会返回那个“文件没有相异处(英文)”的字符串,我以为不会有任何返回值呢。要不怎么说Willsort是高手呢,佩服的五体投地!



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2005-3-24 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 28 楼』:  

Re chenhui530:    今天没有时间写太多了,先给你一个旧帖的链接吧:    三个文件遍历的批处理(实际上是5个)



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-3-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
quan_zhou
初级用户




积分 190
发帖 40
注册 2005-3-17
状态 离线
『第 29 楼』:  

非常感谢大家的帮助!
我现在正在消化WillSort兄的这批处理, 有太多的地方不明白我先去查资料, 因为我太菜了。
实在消化不了的时候再向大家请教。 谢谢大家!


2005-3-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: