![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 02:57 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]2个文件比较的问题 |
| 可打印版本 3,273 / 52 |
| 第1楼 quya | 发表于 2008-07-09 11:28 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
[求助]2个文件比较的问题 假定我有以下2个文件
1.txt 2.txt 现在我得到一个变量值,比如 HEDY,是在文件 1.txt中的行的第一个值。 我对2.txt中路径中的文件(如果是压缩文件则先EXPAND)进行CRC32 校验, 运行 CRC32.EXE, 假定得到的CRC 输出结果在第一行第2个Token, 然后和文件 1.txt第2行值比较,IF FIND, 则把对应的路径赋值给一个变量。 如何在不用第三方程序的前提下高效简洁易懂地写出代码? 谢谢。 补充一下,CRC值校验只运行一次, 但可能要多次调用校验的结果, 所以生成如下的结果文件比较恰当. [ Last edited by quya on 2008-7-9 at 12:01 PM ] |
|
| 第2楼 huahua0919 | 发表于 2008-07-09 12:40 |
| 银牌会员 发帖 780 积分 1,608 | |
|
你这个是不是进行md5效验后检查是否为病毒附本的?
|
|
| 第3楼 bat-zw | 发表于 2008-07-09 13:19 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
没用过crc32,估摸着写的:
[ Last edited by zw19750516 on 2008-7-9 at 01:27 PM ] |
|
| 第4楼 quya | 发表于 2008-07-09 13:35 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
我这个问题想想还是比较复杂的.
1. 首先要把未解压的释放到临时目录校验, 因为最初目录可能是只读的,这种情况下要保存原先未解压的路径值. 2. 就像我一楼帖子最后补充的, 我要把结果放到一个文件中多次调用. 至于CRC运行命令格式和结果是次要的, 只要知道它一定会输出个结果就是了. 就像3楼一样我们只要知道有那么个CRC.TXT文件,里边有各式各样的值就可以了. 3. 难的是把比较以后的结果, 即把1.txt, 2.txt, crc.txt 通过一个特征值再次输出. |
|
| 第5楼 26933062 | 发表于 2008-07-09 13:41 |
| 银牌会员 发帖 879 积分 2,268 | |
|
最好能给出部分crc.txt文件的的样本来。。。
|
|
| 第6楼 quya | 发表于 2008-07-09 13:53 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
Originally posted by 26933062 at 2008-7-9 01:41 PM: 我记不得样本了,但这是个普遍问题. 为了具有普遍性, 假定我先设法得到以下一个 CRC 文件(其实这个文件可以不要,只要最后结果,但不妨一步一步来) CRC.TXT 最后我想得到的就是类似下面这个结果 这个问题用文字描述的话就是这样。 我电脑装了VOL版的XP,现在我想改成OEM版的, 我的主板具备了OEM特征, 我有一大堆OEMBIOS文件可用来替换系统所需要的文件。 为了查找准确的OEMBIOS文件, 我把它们放在一个个特定的文件夹中以便程序来自动寻找。 后来我想想能否再准确一点, 比如我在文件夹中放错了文件,我如果随便放在一个文件夹中呢?能否编个批处理快捷准确地找到呢? 问题就是这样来的。而且我发现这个问题也可以应用在别的地方, 类似的查找应用例子应该不少. [ Last edited by quya on 2008-7-9 at 02:19 PM ] |
|
| 第7楼 26933062 | 发表于 2008-07-09 14:34 |
| 银牌会员 发帖 879 积分 2,268 | |
|
说了一大堆,从1楼到6楼我都没明白你的意图到底是什么。
估摸着写了个代码。先看对不对吧。。。 注意:没考虑crc.txt中的文件名及路径含空格的情况,也没考虑1.txt内容第一列含空格的情况。 且crc.txt的???部分没有重复的前提下。 : [ Last edited by 26933062 on 2008-7-9 at 02:42 PM ] |
|
| 第8楼 quya | 发表于 2008-07-09 15:24 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
假如我运行 (为简化,先暂时不考虑OEMBIOS.CA_ 解压到临时目录OEMBIOS.CAT的问题 )
得到一个 crc.txt, 这个也是模拟的, 实际上可能不是这样简单, 但我会处理了. 第一个问题: 我如何把 2.txt 和 CRC.txt 合并成以下文件 temp.txt(如果能直接解决第2个问题,这个文件可以不要) temp.txt (表中除了2个值是真实的,其他是我虚拟的) 路径 CRC值 第二个问题 如何根据 temp.txt 和 1.txt 通过一个共同的CRC值 得到如下文件 第三个问题 不简化步骤,解决我的实际问题。 实际上,CRC只是个过渡,我只是通过CRC值找到我需要的特定文件的目录,而且这个特定文件可能是CAB压缩的在只读盘上,我不得不先解压再检测。如果不需要上面我说的复杂的步骤,那么再好也不过了。 我真正需要的最终结果类似下面的式样: 不限下面这2个值, 也可能只有一个值, 或者没找到无结果. [ Last edited by quya on 2008-7-9 at 04:10 PM ] |
|
| 第9楼 26933062 | 发表于 2008-07-09 16:16 |
| 银牌会员 发帖 879 积分 2,268 | |
|
问题的关键在于运行crc32.exe 的结果到底是怎样的我们不知道。
你先运行下面的代码把结果帖出来看看。。 : |
|
| 第10楼 terse | 发表于 2008-07-09 16:19 |
| 银牌会员 发帖 946 积分 2,404 | |
| 第11楼 quya | 发表于 2008-07-09 16:45 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
To: 9楼
我手头现在没CRC软件, 我要晚上才知道, 你假定最简单的好了, 就是 CRC32.EXE Filename 输出结果 CRC值, 因为不管CRC实际运行结果, 我都知道怎么处理,这个不是关键. To: 10楼 下班之后我验证一下你的代码, 三个嵌套的 FOR, 看得我头晕, 可能你的代码在 OEMBIOS全部解压的情况下会正确运行, 但考虑压缩的OEMBIOS.CA_ , 情况就会复杂化, 能否先生成下中间文件, 让我解析一下, 以便解决实际问题. 谢谢大家了. |
|
| 第12楼 quya | 发表于 2008-07-09 17:10 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
10楼的思路基本准确,我根据10楼的意思修改了第2个FOR 循环 验证了下。
运行结果是:(能否再完善并提高效率?谢谢!) %i 未正确显示路径! 我主要目的是取得路径. HEDY 162C7931 %i 至于 CRC.TXT 文件的取得, 我初步的设想是下面代码, 未运行验证,可能要用到延迟变量之类的东东。 [ Last edited by quya on 2008-7-9 at 05:13 PM ] |
|
| 第13楼 zh159 | 发表于 2008-07-09 17:23 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
10 楼写错一个字符,所以 12 楼运行有点错误
@echo off |
|
| 第14楼 bat-zw | 发表于 2008-07-09 17:28 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
假设你的winrar存放路径是c:\progra~1\winrar\,如下:
[ Last edited by zw19750516 on 2008-7-9 at 06:04 PM ] |
|
| 第15楼 quya | 发表于 2008-07-09 17:31 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
Originally posted by zh159 at 2008-7-9 05:23 PM: 不行, 路径名根本没用处. 即时J 改成 I 得到的是错误结果. 谢谢10楼和其他帮忙的朋友, 能否再看看. 我是横竖动不出脑筋了. |
|
| 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |