中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 14:40
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » 将一文本文件与N个文本文件作比较,若与某文件内容相同则运
可打印版本  4,264 / 28
第16楼 quan_zhou 发表于 2005-03-22 00:00
初级用户 发帖 40 积分 190
老是麻烦大家,真不好意思,STRINGS哪用下载?
Compfile DOS能正常使用。非常感谢!
请问大家能否提供Strings/Varset哪能下载, 我找了几天都下载不了。
第17楼 Climbing 发表于 2005-03-22 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
varset到Horst的主页下载。用google搜索:Horst varsetHorst Schaeffer的主页:http://home.nikocity.de/horst.muc/int/
Bart的主页:http://www.nu2.nu
我常用的命令行工具请在这里下载:Climbing常用的DOS命令行工具压缩安装包(11M左右)
第18楼 32211001 发表于 2005-03-22 00:00
初级用户 发帖 11 积分 141
我常用的命令行工具请在这里下载:Climbing常用的DOS命令行工具压缩安装包(11M左右)
先谢谢climbing,再问一下:好人做到底吧,请问climing是不是大概写个注释出来啊?要不怎么用啊?
第19楼 Climbing 发表于 2005-03-23 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
没法满足你这种要求(这几乎可以算是无理要求),我的安装包中大概有几百个程序,我不可能一一为这些程序写说明作注释,大部分程序你可以通过运行加/?参数(或者-h, --help)来获得帮助,不明白的你就不要用,还有很多程序的说明文档就在其所在目录下的同名txt文件中。请楼上搞清楚,别人没有义务去手把手教你做什么,很多时候学东西是要靠自己的努力的。
第20楼 quan_zhou 发表于 2005-03-23 00:00
初级用户 发帖 40 积分 190
我把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
第21楼 chenhui530 发表于 2005-03-23 00:00
高级用户 发帖 273 积分 772
要是是随即数很难
第22楼 willsort 发表于 2005-03-24 00:00
元老会员 发帖 1,512 积分 4,432
Re chenhui530:  这不是随机数的问题,而是文件遍历的问题,也就是说,楼主想实现与任意名字的log文件比较,这用for就足够了。如果操作比较复杂,可以在for内Call它的字程序即可。  至于比较,FC完全可以用,用FIND查找FC的输出是否包含文件不存在相异的字串即可,你不是已经这样用了吗?  所以说,这个程序目前可以不需要第三方程序辅助,就可以满足楼主的要求了。
第23楼 chenhui530 发表于 2005-03-24 00:00
高级用户 发帖 273 积分 772
to willsortwillsort兄好像不使用第三方工具不能完成哦!也许是我知识有限吧!请willsort兄公布出完美的程序给大家学习
第24楼 Climbing 发表于 2005-03-24 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
willsort这回是犯错误了,DOS 7.1下的fc是根本没有这种功能的。
第25楼 willsort 发表于 2005-03-24 00:00
元老会员 发帖 1,512 积分 4,432
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环境下的程序中,当然,那是不必要的。不知你是否另有所指?

:: 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 == 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

第26楼 chenhui530 发表于 2005-03-24 00:00
高级用户 发帖 273 积分 772
to willsort我不会使用debug对你的这个程序也是真的看得不太懂!willsort兄能作解释下吗?
第27楼 Climbing 发表于 2005-03-24 00:00
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
Re willsort:是的,是我错了,我没有发现DOS7.1下的fc比较相同的文件后会返回那个“文件没有相异处(英文)”的字符串,我以为不会有任何返回值呢。要不怎么说Willsort是高手呢,佩服的五体投地!
第28楼 willsort 发表于 2005-03-25 00:00
元老会员 发帖 1,512 积分 4,432
Re chenhui530: 今天没有时间写太多了,先给你一个旧帖的链接吧: 三个文件遍历的批处理(实际上是5个)
第29楼 quan_zhou 发表于 2005-03-25 00:00
初级用户 发帖 40 积分 190
非常感谢大家的帮助!
我现在正在消化WillSort兄的这批处理, 有太多的地方不明白我先去查资料, 因为我太菜了。
实在消化不了的时候再向大家请教。 谢谢大家!
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023