中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 14:04
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何对比系统文件,并替换.
可打印版本  846 / 8
第1楼 babytv 发表于 2009-04-03 02:48
新手上路 发帖 3 积分 3
如何对比系统文件,并替换.
想作一个批处理..
让文件夹中的文件与%windir%\system32下的系统文件作对比.
如果系统文件被修改过,则自动替换.

用什么命令可以实现?
如:fc ctfmon.exe %windir%\system32\ctfmon.exe

--------
因为这个批处理针对的不仅仅只有一台电脑
所以用时间来对照是否有被修改过,这个方法不可行.

至于MD5,貌似可以..

另外FC对比文件时,是否会返回值呢?
如果可以,直接用FC对照后,如果两者有区别

则用当前文件替换system32目录中的文件.

[ Last edited by babytv on 2009-4-6 at 04:28 ]
第2楼 freezing2688 发表于 2009-04-03 06:06
新手上路 发帖 8 积分 8
先说清楚你的意思啊。- -!
以system32为例
你是想比较system32里面的文件增加还是减少了?
还是想比较system32里面的具体的某一个对象。像cmd.exe是否被修改这样的?
第3楼 netbenton 发表于 2009-04-03 07:50
银牌会员 发帖 752 积分 1,916 来自 广西
我有个想法:
做个文件时间记录表,如果最后修改时间不同了,则说明被修改过了,然后替换。
第4楼 tireless 发表于 2009-04-03 08:50
银牌会员 发帖 1,122 积分 2,025
http://dyersweb.com/projects/MD5/

将 md5 值保存到文本:

之后可以直接检测:


[ Last edited by tireless on 2009-4-3 at 08:57 ]
第5楼 ZJHJ 发表于 2009-04-03 09:48
高级用户 发帖 374 积分 609
在我编辑的 ’计算机系统维护‘ 里就有这个功能 ,主要是对‘exe、dll、inf 程序快照比较 (检查是否被病毒修改) 文件是按修改时间,文件路径,文件大小记录的。快照比较后直接得到对照结果。
http://www.cn-dos.net/forum/viewthread.php?tid=46354&fpage=1
第6楼 babytv 发表于 2009-04-06 04:30
新手上路 发帖 3 积分 3
Originally posted by freezing2688 at 2009-4-3 06:06:
先说清楚你的意思啊。- -!
以system32为例
你是想比较system32里面的文件增加还是减少了?
还是想比较system32里面的具体的某一个对象。像cmd.exe是否被修改这样的?


针对某个文件.
第7楼 babytv 发表于 2009-04-06 04:31
新手上路 发帖 3 积分 3
Originally posted by ZJHJ at 2009-4-3 09:48:
在我编辑的 ’计算机系统维护‘ 里就有这个功能 ,主要是对‘exe、dll、inf 程序快照比较 (检查是否被病毒修改) 文件是按修改时间,文件路径,文件 ...


你那个程序我之前也曾找到并下载测试过.
它是记录修改时间.
与我的想法不符.
第8楼 ZJHJ 发表于 2009-04-06 06:07
高级用户 发帖 374 积分 609
Originally posted by babytv at 2009-4-3 02:48:
想作一个批处理..
让文件夹中的文件与%windir%\system32下的系统文件作对比.
如果系统文件被修改过,则自动替换.

用什么命令可以实现?
如:fc ctfmon.exe ...

这我就不明白了....你不是说了吗? (如果系统文件被修改过,则自动替换) 你不记录修改时间? 莫非要记录创建时间? 还是访问时间啊?.......

要检查文件是否被修改?只有记录修改时间,在你认为计算机程序正常的情况下,
按修改时间,路经,大小,程序名记录作为标准。一但你认为需要知道计算机程序是否被修改时,重新记录一次,就会自动比较出来。若文件内容被修改 1 修改时间会变. 2 文件大小也会变.

再说,文件记录下来会大于1GM. 如果被修改的程序很多,光用FC比较,或者用网络上找的简单代码来检查都不会达到满意的效果.(因为我做了这方面大量的研究)
如果你只用FC的返回值,当然就很简单.(那新装程序怎么办?)

[ Last edited by ZJHJ on 2009-4-6 at 06:57 ]
第9楼 slore 发表于 2009-04-06 06:56
铂金会员 发帖 2,478 积分 5,212
@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
Set S=D:\test
Set D=C:\test
Pushd %S%
For /f "delims=" %%i in ('dir /A-D /B %D%') Do (
FC.exe /B "%D%\%%i" "%S%\%%i" 1>nul 2>nul
if !errorlevel! EQU 0 (Echo %%i 没有差异) else (if !errorlevel! EQU 1 (Echo %%i 有所变化) else (Echo %S%\%%i 不存在))
)
Popd
Pause
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023