中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 03:52
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]2个文件比较的问题
可打印版本  3,278 / 52
第16楼 26933062 发表于 2008-07-09 18:59
银牌会员 发帖 879 积分 2,268
如果10楼的代码可行的话,那么这样效率应该高些。
:
第17楼 quya 发表于 2008-07-09 21:27
高级用户 发帖 172 积分 558 来自 江苏
上面的代码都不行啊, 不过还是衷心感谢大家.

我想先从简单的开始, 我有一个很小的CRC32 程序

到我 ftp://quya.2mydns.com/crc32.com 下载

此程序在代码页437下运行, 而且不支持长文件名和带有空格的目录, 但用以下代码可以得到正确的结果.



2.txt 文件内容如下:

G:\IBM\oembios.cat
G:\IBM\OEMBIOS.CA_
G:\WXPOEM\IBM\I386\OEMBIOS.CA_
G:\xpdos\I386\OEMBIOS.CA_
G:\xpdos\WXPOEM\ACER\OEMBIOS.CAT
G:\xpdos\WXPOEM\ASUS\OEMBIOS.CA_
G:\xpdos\WXPOEM\DELL\OEMBIOS.CAT
G:\xpdos\WXPOEM\HPQ\OEMBIOS.CAT
G:\xpdos\WXPOEM\IBM\OEMBIOS.CAT
G:\xpdos\WXPOEM\LENOVO\OEMBIOS.CAT
F:\e\Backup\Tools\OEM 5文件\Acer\OEMBIOS.CA_
F:\e\Backup\Tools\OEM 5文件\COMPAQ\OEMBIOS.CA_
F:\e\Backup\Tools\OEM 5文件\HEDY\OEMBIOS.CA_
F:\e\Backup\Tools\OEM 5文件\HP\OEMBIOS.CA_
F:\e\Backup\Tools\OEM 5文件\IBM\OEMBIOS.CA_
F:\e\Backup\Tools\OEM 5文件\Legend\OEMBIOS.CA_
F:\e\Backup\Tools\OEM 5文件\SAMSUNG\OEMBIOS.CA_
F:\e\Backup\Tools\OEM 5文件\Sony\OEMBIOS.CA_
F:\FTP\Up\2003ent\OEMBIOS.CA_
E:\OEM 文件\ACER\OEMBIOS.CAT
E:\OEM 文件\LEGEND\OEMBIOS.CA_


运行的结果如下:

G:\IBM\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat 90BBDCA0
G:\xpdos\WXPOEM\ACER\OEMBIOS.CAT 717B6EF3
C:\WINXP\TEMP\oembios.cat B20C65BF
G:\xpdos\WXPOEM\DELL\OEMBIOS.CAT B6F0EEFD
G:\xpdos\WXPOEM\HPQ\OEMBIOS.CAT CD4E1902
G:\xpdos\WXPOEM\IBM\OEMBIOS.CAT D7A77612
G:\xpdos\WXPOEM\LENOVO\OEMBIOS.CAT 5237B729
C:\WINXP\TEMP\oembios.cat 700A8481
C:\WINXP\TEMP\oembios.cat 74572CCF
C:\WINXP\TEMP\oembios.cat 162C7931
C:\WINXP\TEMP\oembios.cat 74572CCF
C:\WINXP\TEMP\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat 7B06BD13
C:\WINXP\TEMP\oembios.cat 904CF15A
C:\WINXP\TEMP\oembios.cat 74572CCF
C:\WINXP\TEMP\oembios.cat 57E3E3DC
E:\OEM文~1\ACER\OEMBIOS.CAT 717B6EF3
C:\WINXP\TEMP\oembios.cat 7B06BD13


先解决以下问题, 如何把临时目录 C:\WINXP\TEMP\ 还原成本来目录.

然后再慢慢来, 谢谢大家, 老土的脑筋现在有点不好使.

[ Last edited by quya on 2008-7-9 at 09:42 PM ]
第18楼 26933062 发表于 2008-07-09 21:36
银牌会员 发帖 879 积分 2,268
越来越不知道你要干什么了?
G:\IBM\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat 90BBDCA0
G:\xpdos\WXPOEM\ACER\OEMBIOS.CAT 717B6EF3
C:\WINXP\TEMP\oembios.cat B20C65BF
G:\xpdos\WXPOEM\DELL\OEMBIOS.CAT B6F0EEFD
G:\xpdos\WXPOEM\HPQ\OEMBIOS.CAT CD4E1902
G:\xpdos\WXPOEM\IBM\OEMBIOS.CAT D7A77612
G:\xpdos\WXPOEM\LENOVO\OEMBIOS.CAT 5237B729
C:\WINXP\TEMP\oembios.cat 700A8481
C:\WINXP\TEMP\oembios.cat 74572CCF
C:\WINXP\TEMP\oembios.cat 162C7931
C:\WINXP\TEMP\oembios.cat 74572CCF
C:\WINXP\TEMP\oembios.cat D7A77612
这些是crc.txt的内容吗?
如果是,难道7楼的代码不行?
第19楼 quya 发表于 2008-07-09 21:47
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by 26933062 at 2008-7-9 09:36 PM:
越来越不知道你要干什么了?
G:\IBM\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat D7A77612
C:\WINXP\TEMP\oembios.cat 90BBDCA0
G:\xpdos\WXPOEM\ACE ...


下午在单位没试你的代码, 对不起, 刚才试了下, 正确而且速度很快.

但是能否解决在压缩文件的情况下还原本来目录的问题. 17楼我提到的问题.

能解释下 for /f "tokens=1* delims= " %%a in (1.txt) do set %%b=%%a 这句意思吗? %%b 是第2个 token, 也就是 "1*" 中的 "*", 怎么还可以赋值, 实在看不懂啊 .

再编辑, 有点知道了, 这样生成了很多变量, 变量名取第2个token, 赋的值是第一个, 我担心的是, 如果我文件很长, 变量名这么多会不会溢出而出错?

因为小时候就知道, 要节省变量名和及时释放变量, 我那个时候的内存是小得可怜的, 不敢用太多变量.


[ Last edited by quya on 2008-7-9 at 10:02 PM ]
第20楼 26933062 发表于 2008-07-09 21:52
银牌会员 发帖 879 积分 2,268
不理解
是2.txt中有压缩文件?
crc32.exe 可以对其进行解压缩?并且解压到C:\WINXP\TEMP\目录?
本来目录又是什么目录?
第21楼 quya 发表于 2008-07-09 22:01
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by 26933062 at 2008-7-9 09:52 PM:
不理解
是2.txt中有压缩文件?
crc32.exe 可以对其进行解压缩?并且解压到C:\WINXP\TEMP\目录?
本来目录又是什么目录?


是的, 文件名扩展名是 .ca_ 的就是压缩文件, 需要expand 再对它校验, 请参照我17楼的解压代码, 谢谢.
第22楼 bat-zw 发表于 2008-07-09 22:11
金牌会员 发帖 1,276 积分 3,105
老土测试了我14的代码吗?我里面加了对rar文件的判断和解压,你只要自己改下就可以了。

[ Last edited by zw19750516 on 2008-7-9 at 10:20 PM ]
第23楼 quya 发表于 2008-07-09 22:20
高级用户 发帖 172 积分 558 来自 江苏
Originally posted by zw19750516 at 2008-7-9 10:11 PM:
老土测试了我14的代码吗?我里面加了对rar文件的判断和解压,你只要自己改下后缀就可以了。


谢谢你的代码, 但

1. 解压不是 WINRAR, 当然这个我可以改
2. 最关键的是你解压在当前目录了, 而当前目录可能只读, 所以一定要解到临时目录

由于2的问题, 如何取得原来目录就成了问题.
第24楼 26933062 发表于 2008-07-09 22:33
银牌会员 发帖 879 积分 2,268
根据你17楼代码改进,获取原目录及文件名
至于你说变量益处,这个问题我还没遇到过,
作了个简单的测试,十万个变量名没发现错误的现象。我的物理内存是128m
但如果你的1.txt内容很长的话,你用前面的代码for+findstr估计你会等到头发变白。。。


[ Last edited by 26933062 on 2008-7-9 at 10:34 PM ]
第25楼 bat-zw 发表于 2008-07-09 22:35
金牌会员 发帖 1,276 积分 3,105
我日,好麻烦,这下可以解决你的问题了吧:


[ Last edited by zw19750516 on 2008-7-9 at 11:25 PM ]
第26楼 26933062 发表于 2008-07-09 22:59
银牌会员 发帖 879 积分 2,268
不好意思24楼说的十万个变量名,没测试完,实际测试是四万个。
第27楼 quya 发表于 2008-07-09 23:06
高级用户 发帖 172 积分 558 来自 江苏
24, 25 楼的代码 %~fsi 都 少了个 %, 不过这容易改.

25楼运行结果不是太理想:

G:\IBM\oembios.cat D7A77612
G:\IBM\OEMBIOS.CA_ D7A77612
G:\WXPOEM\IBM\I386\OEMBIOS.CA_ D7A77612
G:\xpdos\I386\OEMBIOS.CA_ 90BBDCA0
G:\xpdos\WXPOEM\ACER\OEMBIOS.CAT 717B6EF3
G:\xpdos\WXPOEM\ASUS\OEMBIOS.CA_ B20C65BF
G:\xpdos\WXPOEM\DELL\OEMBIOS.CAT B6F0EEFD
G:\xpdos\WXPOEM\HPQ\OEMBIOS.CAT CD4E1902
G:\xpdos\WXPOEM\IBM\OEMBIOS.CAT D7A77612
G:\xpdos\WXPOEM\LENOVO\OEMBIOS.CAT 5237B729
F:\e\Backup\Tools\OEM 5文件\Acer\OEMBIOS.CA_ ??
F:\e\Backup\Tools\OEM 5文件\COMPAQ\OEMBIOS.CA_ ??
F:\e\Backup\Tools\OEM 5文件\HEDY\OEMBIOS.CA_ ??
F:\e\Backup\Tools\OEM 5文件\HP\OEMBIOS.CA_ ??
F:\e\Backup\Tools\OEM 5文件\IBM\OEMBIOS.CA_ ??
F:\e\Backup\Tools\OEM 5文件\Legend\OEMBIOS.CA_ ??
F:\e\Backup\Tools\OEM 5文件\SAMSUNG\OEMBIOS.CA_ ??
F:\e\Backup\Tools\OEM 5文件\Sony\OEMBIOS.CA_ ??
F:\FTP\Up\2003ent\OEMBIOS.CA_ 57E3E3DC
E:\OEM ??
E:\OEM 文件\LEGEND\OEMBIOS.CA_ ??


24楼运行结果接近完美:

G:\IBM\oembios.cat D7A77612
G:\IBM\OEMBIOS.CA_ D7A77612
G:\WXPOEM\IBM\I386\OEMBIOS.CA_ D7A77612
G:\xpdos\I386\OEMBIOS.CA_ 90BBDCA0
G:\xpdos\WXPOEM\ACER\OEMBIOS.CAT 717B6EF3
G:\xpdos\WXPOEM\ASUS\OEMBIOS.CA_ B20C65BF
G:\xpdos\WXPOEM\DELL\OEMBIOS.CAT B6F0EEFD
G:\xpdos\WXPOEM\HPQ\OEMBIOS.CAT CD4E1902
G:\xpdos\WXPOEM\IBM\OEMBIOS.CAT D7A77612
G:\xpdos\WXPOEM\LENOVO\OEMBIOS.CAT 5237B729
F:\e\Backup\Tools\OEM 5文件\Acer\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\COMPAQ\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\HEDY\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\HP\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\IBM\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\Legend\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\SAMSUNG\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\Sony\OEMBIOS.CA_ B20C65BF
F:\FTP\Up\2003ent\OEMBIOS.CA_ 57E3E3DC
E:\OEM ??
E:\OEM 文件\LEGEND\OEMBIOS.CA_ 57E3E3DC


但想不通的是倒数第2个结果会这样?!!

我仔细看了代码, 没错误啊.

用下边语句检测也没问题啊, 晕倒!



大家辛苦了!!! 万分感谢!!

[ Last edited by quya on 2008-7-9 at 11:08 PM ]
第28楼 bat-zw 发表于 2008-07-09 23:09
金牌会员 发帖 1,276 积分 3,105
如不要生成临时的crc.txt:


[ Last edited by zw19750516 on 2008-7-9 at 11:31 PM ]
第29楼 quya 发表于 2008-07-09 23:16
高级用户 发帖 172 积分 558 来自 江苏
仔细看了下, 还是有问题.

F:\e\Backup\Tools\OEM 5文件\Acer\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\COMPAQ\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\HEDY\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\HP\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\IBM\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\Legend\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\SAMSUNG\OEMBIOS.CA_ B20C65BF
F:\e\Backup\Tools\OEM 5文件\Sony\OEMBIOS.CA_ B20C65BF


这里全部一样了.
第30楼 bat-zw 发表于 2008-07-09 23:16
金牌会员 发帖 1,276 积分 3,105
Originally posted by quya at 2008-7-9 23:06:
24, 25 楼的代码 %~fsi 都 少了个 %, 不过这容易改.

25楼运行结果不是太理想:



24楼运行结果接近完美:



但想不通的是倒数第2个结果会这样?!!
...

难道1.txt是多余的?
上一页  1 2 3 4  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023