中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] [3] [4] »
作者:
标题: [求助]2个文件比较的问题 上一主题 | 下一主题
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 46 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-7-10 12:09 AM:

是不是我的眼睛出了问题,我把24楼的代码看了n次,就是没看到一个defined,老土,你是不是再看一下啊。

对不起, 应该24楼代码+7楼代码, 看错了.

另外, 你的代码可能多了或者少了括号的问题. 我看不出来.

[ Last edited by quya on 2008-7-10 at 12:17 AM ]



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-7-10 00:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 47 楼』:  

我晕,没多也没少啊,我也没看出来。
不想了,睡觉了。

[ Last edited by zw19750516 on 2008-7-10 at 12:27 AM ]



批处理之家新域名:www.bathome.net
2008-7-10 00:23
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 48 楼』:  

39楼的代码对1.txt循环的次数等于2.txt的行数乘以1.txt的行数,所以效率会低的多。

[ Last edited by 26933062 on 2008-7-10 at 12:31 AM ]



致精致简!
2008-7-10 00:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 49 楼』:  

楼主问题解决了吗?



致精致简!
2008-7-10 00:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 50 楼』:  



  Quote:
Originally posted by 26933062 at 2008-7-10 12:30 AM:
楼主问题解决了吗?

你号称初中都没毕业, 现在打死我也不相信了. 初中没毕业程序会写得这么溜? 把我这个号称大学以上文化的人忽悠得晕头转向.

要是我年轻十岁, 我估计我不会来这求助的, 难为情啊. 大不了搞个通宵把所有命令吃透了再想办法, 可是年纪大了,确实不行了.

睡觉了, 今天又学到不少东西. 活到老学到老. 谢谢各位!

[ Last edited by quya on 2008-7-10 at 12:52 AM ]



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-7-10 00:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 51 楼』:  

还是小楼兄的好看
把你的加上比较
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1*" %%i in (1.txt) do set "%%j=%%i"
   for /f "delims=" %%a in (2.txt) do (
      if /i "%%~xa"==".cat" (
        for /f "tokens=1*" %%i in ('crc32 %%~fsa') do if defined %%j >>crc.txt echo !%%j! %%j %%i)else (
        expand %%~fsa %temp%\%%~na.cat
        for /f "tokens=1*" %%i in ('crc32 %temp%\%%~na.cat') do if defined %%j >>crc.txt echo !%%j! %%j %%~fsa
))
pause




简单!简单!再简单!
2008-7-10 01:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 52 楼』:  

又看了下顶楼的描述,楼主的这句话。
现在我得到一个变量值,比如 HEDY,是在文件 1.txt中的行的第一个值。
我对2.txt中路径中的文件(如果是压缩文件则先EXPAND)进行CRC32 校验, 运行 CRC32.EXE, 假定得到的CRC 输出结果在第一行第2个Token, 然后和文件 1.txt第2行值比较,IF FIND, 则把对应的路径赋值给一个变量。

好像是要根据一个变量的值来查找需要的文件名,而不是全部对比。
如下:str的值就是需要查找的。可以是多个,用空格分开。
:
@echo off&setlocal enabledelayedexpansion
set str=HEDY LEGEND
for /f "tokens=1* delims= " %%a in (1.txt) do set "%%a=%%b"
for /f "delims==" %%i in (2.txt) do (
  if /i %%~xi==.cat (
     for /f "delims=" %%j in ('crc32 %%~fsi') do set "var=%%j"
   ) else (
    expand %%~fsi %temp%\oembios.cat
    for /f "tokens=2" %%j in ('crc32 %temp%\oembios.cat') do set "var=%%j"
    del/q %temp%\oembios.cat >nul 2>nul
  )
    for %%a in (%str%) do if /i "!var!"=="!%%a!" echo %%a !var! %%i
)
pause
[ Last edited by 26933062 on 2008-7-10 at 01:21 AM ]



致精致简!
2008-7-10 01:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 53 楼』:  



  Quote:
Originally posted by quya at 2008-7-9 13:53:
我电脑装了VOL版的XP,现在我想改成OEM版的, 我的主板具备了OEM特征, 我有一大堆OEMBIOS文件可用来替换系统所需要的文件。 为了查找准确的OEMBIOS文件, 我把它们放在一个个特定的文件夹中以便程序来自动寻找。

有点乱七八糟我就上述问题给你解决方法(需要crc32sum.exe)
@echo off
for /f "delims=" %%a in ('dir /s/a-d/b D:\*.CA*') do call :xxx "%%a"
pause

:xxx
set "FliePath=%~dp1"
set "Flie=%~nx1"
if "%Flie:~-1%"=="_" (
    EXPAND "%~1" "%temp%\OEMBIOS.CAT" >nul
    for /f "tokens=1 delims=* " %%i in ('crc32sum.exe -b "%temp%\OEMBIOS.CAT"') do set "crc32=%%i"
    ) else (
    for /f "tokens=1 delims=* " %%i in ('crc32sum.exe -b "%~1"') do set "crc32=%%i"
)
for /f "tokens=1 delims= " %%k in ('type 1.txt^|find /i "%crc32%"') do echo 文件"%~1"        对应品牌%%k
功能描述
枚举D盘CA*扩展名,如果扩展名是CA_就用EXPAND解压到临时文件夹再crc32sum.exe校验,否则直接crc32sum.exe校验,将校验值赋予变量crc32,最后筛选OEM显示结果
crc32sum.exe请到我的网盘下载
http://fastslz.cech.com.cn/#show=file
这个是我的执行结果

  Quote:
文件"D:\oembios\XP_ACER_OEM\OEMBIOS.CA_"                对应品牌Acer
文件"D:\oembios\XP_ASUS_OEM\OEMBIOS.CA_"                对应品牌Asus
文件"D:\oembios\XP_COMPAQ_OEM\OEMBIOS.CA_"              对应品牌Compaq
文件"D:\oembios\XP_DELL_OEM\OEMBIOS.CA_"                对应品牌Dell
文件"D:\oembios\XP_HP_OEM\OEMBIOS.CA_"          对应品牌Hewlett-Packard
文件"D:\oembios\XP_IBM_OEM\OEMBIOS.CA_"         对应品牌IBM
文件"D:\oembios\XP_IBM_OEM\OEMBIOS.CA_"         对应品牌IBM
文件"D:\oembios\XP_Lenovo_OEM\OEMBIOS.CA_"              对应品牌LEGEND
文件"D:\oembios\XP_Lenovo_OEM\OEMBIOS.CA_"              对应品牌LEGEND
文件"D:\oembios\XP_SONY_OEM\OEMBIOS.CA_"                对应品牌Sony
请按任意键继续. . .





第一高手    第二高手

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


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



论坛跳转: