|
babytv
新手上路
积分 3
发帖 3
注册 2009-4-2
状态 离线
|
『楼 主』:
如何对比系统文件,并替换.
想作一个批处理..
让文件夹中的文件与%windir%\system32下的系统文件作对比.
如果系统文件被修改过,则自动替换.
用什么命令可以实现?
如:fc ctfmon.exe %windir%\system32\ctfmon.exe
--------
因为这个批处理针对的不仅仅只有一台电脑
所以用时间来对照是否有被修改过,这个方法不可行.
至于MD5,貌似可以..
另外FC对比文件时,是否会返回值呢?
如果可以,直接用FC对照后,如果两者有区别
则用当前文件替换system32目录中的文件.
[ Last edited by babytv on 2009-4-6 at 04:28 ]
|
|
2009-4-3 02:48 |
|
|
freezing2688
新手上路
积分 8
发帖 8
注册 2008-11-13
状态 离线
|
『第
2 楼』:
先说清楚你的意思啊。- -!
以system32为例
你是想比较system32里面的文件增加还是减少了?
还是想比较system32里面的具体的某一个对象。像cmd.exe是否被修改这样的?
|
|
2009-4-3 06:06 |
|
|
netbenton
银牌会员
批处理编程迷
积分 1916
发帖 752
注册 2008-12-28 来自 广西
状态 离线
|
『第
3 楼』:
我有个想法:
做个文件时间记录表,如果最后修改时间不同了,则说明被修改过了,然后替换。
|
精简
[你的+我的+他的]=>[大家的] 个人网志 |
|
2009-4-3 07:50 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
4 楼』:
http://dyersweb.com/projects/MD5/
Usage: md5sum.exe [OPTIONS] <src1>[ src2...]
This utility is for displaying and verifying MD5 digests.
Using no arguments will allow you to input data directly into stdin
Argument Update v1.0.0+ RC: -v (little v) now outputs version, and -V toggles ve
rbose
OPTIONS:
-h, --help Display this help and quit.
-v, --version Output version and license info.
-p, --plain-text <"text"> Output digest for "text" and close.
Note: the next two options are just for compatibility with other md5sum utilitie
s
-t Default type: read files in text mode.
-b Output signifying that files should be read
in binary mode.
These options are for md5 checking only, -v cannot be used on its own.
-c, --check <md5file> Checks if digest matches file.*
-V, --verbose Must use with -c,--check: output in detail.
* = the md5 file should be in the same format (or of the format produced by the
Unix md5sum
tool)
EXAMPLES:
md5sum.exe archive.tar.gz archive2.tar.gz *.txt
md5sum.exe -cV digests.md5
md5sum.exe --plain-text "hello, world" 将 md5 值保存到文本:
md5sum %windir%\system32\*.exe>system32_md5.txt 之后可以直接检测:
md5sum -c system32_md5.txt [ Last edited by tireless on 2009-4-3 at 08:57 ]
|
|
2009-4-3 08:50 |
|
|
ZJHJ
高级用户
积分 609
发帖 374
注册 2006-8-2
状态 离线
|
|
2009-4-3 09:48 |
|
|
babytv
新手上路
积分 3
发帖 3
注册 2009-4-2
状态 离线
|
『第
6 楼』:
Quote: | Originally posted by freezing2688 at 2009-4-3 06:06:
先说清楚你的意思啊。- -!
以system32为例
你是想比较system32里面的文件增加还是减少了?
还是想比较system32里面的具体的某一个对象。像cmd.exe是否被修改这样的? |
|
针对某个文件.
|
|
2009-4-6 04:30 |
|
|
babytv
新手上路
积分 3
发帖 3
注册 2009-4-2
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by ZJHJ at 2009-4-3 09:48:
在我编辑的 ’计算机系统维护‘ 里就有这个功能 ,主要是对‘exe、dll、inf 程序快照比较 (检查是否被病毒修改) 文件是按修改时间,文件路径,文件 ... |
|
你那个程序我之前也曾找到并下载测试过.
它是记录修改时间.
与我的想法不符.
|
|
2009-4-6 04:31 |
|
|
ZJHJ
高级用户
积分 609
发帖 374
注册 2006-8-2
状态 离线
|
『第
8 楼』:
Quote: | 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 ]
|
|
2009-4-6 06:07 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
9 楼』:
@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
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2009-4-6 06:56 |
|