![]() |
中国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: 针对某个文件. |
|
| 第7楼 babytv | 发表于 2009-04-06 04:31 |
| 新手上路 发帖 3 积分 3 | |
Originally posted by ZJHJ at 2009-4-3 09:48: 你那个程序我之前也曾找到并下载测试过. 它是记录修改时间. 与我的想法不符. |
|
| 第8楼 ZJHJ | 发表于 2009-04-06 06:07 |
| 高级用户 发帖 374 积分 609 | |
Originally posted by babytv at 2009-4-3 02:48: 这我就不明白了....你不是说了吗? (如果系统文件被修改过,则自动替换) 你不记录修改时间? 莫非要记录创建时间? 还是访问时间啊?....... 要检查文件是否被修改?只有记录修改时间,在你认为计算机程序正常的情况下, 按修改时间,路经,大小,程序名记录作为标准。一但你认为需要知道计算机程序是否被修改时,重新记录一次,就会自动比较出来。若文件内容被修改 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 |