中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-19 13:16
47,814 主题排行 / 349,908 发帖 / 今日 0 篇 / 48,259 会员排行
DOS疑难解答 & 问题讨论 (解答室) » [求助][讨论]有没有高手可以在纯dos下做到这个功能?
可打印版本  3,364 / 33
第1楼 peiliqin 发表于 2008-07-27 02:31
初级用户 发帖 16 积分 34
[求助][讨论]有没有高手可以在纯dos下做到这个功能?
有没有高手可以在纯dos下做到这个功能?

SMARTDRV.EXE
if exist a:\jieguo.txt del a:\jieguo.txt
md5 -c n:\tools\cfcsys.txt >a:\jieguo.txt
for /f "tokens=2" %%W in (d:\fix\cfcsys.txt) do if /i "%%W" NEQ "OK" goto end
pause
exit

:end
command.com /c n:\gamemenu\system\fix.bat >nul
pause

n:\tools\cfcsys.txt 文件实际存在。
不管用什么方法,什么软件,谁能实现这个要求?向高手求救了。!!!!!!

补充:cfcsys.txt的内容(只是范例)
\89fe32de8587b0dfd76efce00396eb56 *c:\\windows\\NOTEPAD.EXE
\82b8373ed12a602820108f6154bf0c4c *c:\\windows\\explorer.exe
\b313c22a27d1d8677cdec778346d817e *c:\\windows\\regedit.exe
\65a70ec4649499399b50ac75d911a501 *c:\\windows\\system32\\Rundll32.exe
\9cabf264ce1177cafbbba4b910a44c79 *c:\\windows\\system32\\Services.exe
\06955b9a1ce9f54be0193030ef0a6e0e *c:\\windows\\system32\\Winlogon.exe
\722a247acb86960a708528120759266d *c:\\windows\\system32\\cmd.exe
\3502114e4cb83e491a80fc361c1dc7b7 *c:\\windows\\system32\\csrss.exe

jieguo.txt的内容
c:\windows\NOTEPAD.EXE: OK
c:\windows\explorer.exe: OK
c:\windows\regedit.exe: OK
c:\windows\system32\Rundll32.exe: OK
c:\windows\system32\Services.exe: OK
c:\windows\system32\Winlogon.exe: OK
c:\windows\system32\cmd.exe: OK
c:\windows\system32\csrss.exe: OK

[ Last edited by peiliqin on 2008-7-29 at 12:12 AM ]
第2楼 peiliqin 发表于 2008-07-27 21:24
初级用户 发帖 16 积分 34
用其他的方法,变通一下,或者有没有其他的dos软件可以做到?
第3楼 peiliqin 发表于 2008-07-28 00:33
初级用户 发帖 16 积分 34
用其他的方法,变通一下,或者有没有其他的dos软件可以做到? 怎么没有人回答啊?
第4楼 peiliqin 发表于 2008-07-28 00:38
初级用户 发帖 16 积分 34
听说,dos下有个awk可以做到,可是看不懂,搞的一头雾水。请教awk高手帮帮忙了啊。
第5楼 DOSforever 发表于 2008-07-28 00:41
金牌会员 发帖 2,239 积分 4,639
我不知道 d:\fix\cfcsys.txt 文件具体的内容是什么,按照你原来的意思,只要有一行中的第二个字不是 "OK" 的话就 goto end ,也就是每一行都要有 "OK" 字样,简单点的话用 find /v 配合 errorleverl 来判断。还有,为什么要用 command/c ?
第6楼 quya 发表于 2008-07-28 19:53
高级用户 发帖 172 积分 558 来自 江苏
看他的程序,可以猜到 CFCSYS.txt 的内容是 MD5 码 校验的结果, 只要有一个文件不通过, 就运行 FIX.BAT, FIX.BAT想必就是对没通过校验的文件进行修复之类的工作。

怎么做,我不知道,等其他人吧。

DOS因为有了FOR才变得丰富多彩,纯DOS下就那么几个命令,无法取巧,除非用第三方程序。
第7楼 DOSforever 发表于 2008-07-28 21:17
金牌会员 发帖 2,239 积分 4,639
看看好像很简单,没什么复杂的。问题是他的 a:\jieguo.txt 好像和 d:\fix\cfcsys.txt 没什么关系,他为什么不去验证 a:\jieguo.txt 中的 OK ,而去找 d:\fix\cfcsys.txt 中的 OK ?
第8楼 peiliqin 发表于 2008-07-29 00:15
初级用户 发帖 16 积分 34
Originally posted by quya at 2008-7-28 07:53 PM:
看他的程序,可以猜到 CFCSYS.txt 的内容是 MD5 码 校验的结果, 只要有一个文件不通过, 就运行 FIX.BAT, FIX.BAT想必就是对没通过校验的文件进行修复之 ...


cfcsys.txt是标准文件,jieguo.txt是个根据cfcsys.txt生成的临时文件。
第9楼 lianjiang2004 发表于 2008-07-29 07:45
金牌会员 发帖 1,884 积分 3,946
可用截取每行最后两位字符,若不等于OK,就修复的方法。
strings就可以。
第10楼 peiliqin 发表于 2008-07-29 07:59
初级用户 发帖 16 积分 34
Originally posted by DOSforever at 2008-7-28 12:41 AM:
我不知道 d:\fix\cfcsys.txt 文件具体的内容是什么,按照你原来的意思,只要有一行中的第二个字不是 "OK" 的话就 goto end ,也就是每一行都要有 & ...


试了一下,当文件内容有改变的时候,总是不能确定errorlevel的值。无法进行跳转。
第11楼 peiliqin 发表于 2008-07-29 08:01
初级用户 发帖 16 积分 34
Originally posted by lianjiang2004 at 2008-7-29 07:45 AM:
可用截取每行最后两位字符,若不等于OK,就修复的方法。
strings就可以。



我也看这个参数了,就是不知道怎么取 strings的值。能不能给个确切的例子?
第12楼 DOSforever 发表于 2008-07-29 09:56
金牌会员 发帖 2,239 积分 4,639
Originally posted by peiliqin at 2008-7-29 07:59:

试了一下,当文件内容有改变的时候,总是不能确定errorlevel的值。无法进行跳转。

我的理解是你只要有一个不是 OK,就 goto 。find/v 如果找到了一个不是 OK 的,就返回退出码0,如果没找到就返回1,说明都是 OK 。为什么“总是不能确定errorlevel的值”?
第13楼 qzwqzw 发表于 2008-07-29 20:18
银牌会员 发帖 636 积分 2,343
使用 command /c 是想屏掉 fix.bat 的输出
但是仍然不明白 d:\fix\cfcsys.txt 与 n:\tools\cfcsys.txt 是什么关系
按照12楼的思路给个最简化的原型代码
可以参考一下

第14楼 peiliqin 发表于 2008-07-29 21:34
初级用户 发帖 16 积分 34
我的理解是你只要有一个不是 OK,就 goto 。find/v 如果找到了一个不是 OK 的,就返回退出码0,如果没找到就返回1,说明都是 OK 。为什么“总是不能确定errorlevel的值”?

我测试了,1跟0的效果一样。2的时候就完全是另外一个效果了。我可以在windows下的cmd查看上一个命令的返回码,但是在纯dos下,不知道怎么看。
第15楼 DOSforever 发表于 2008-07-29 21:39
金牌会员 发帖 2,239 积分 4,639
你把你试的语句贴出来
1 2 3  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023