Board logo

标题: 如何判定文件是否被修改过, [打印本页]

作者: huangshuirun     时间: 2010-2-2 20:23    标题: 如何判定文件是否被修改过,

如何判定文件是否被修改过,
我相用批处理定时检查某个记事本文件是否被写入,然后自动打开来.

请高手帮忙.不胜感激.
作者: HAT     时间: 2010-2-2 21:03
你准备你什么标准来判断文件是否被写入?
作者: sysplay     时间: 2010-2-2 22:22

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2" %%i in ('dir a.txt^| find "a.txt"') do set "str=%%i%%j"
if not EXIST _a.txt (
        echo !str!>_a.txt
        echo 第一次执行,记录文件修改时间。
) else (
        set /p str2=<_a.txt
        if "!str!"=="!str2!" (
                echo 文件未被修改
        ) else (
                echo 记录的修改时间为!str2!
                echo 实际的修改时间为!str!
                echo 文件已被修改,重新记录修改时间
                echo !str!>_a.txt
        )
)
pause>nul
这个是基于文件的修改时间来确定的。
另外一种方法是,将文件备份一下。之后比较一下就可以了。
作者: bbsphixy     时间: 2010-2-3 11:40
方法是有滴:

我提示一下:  批处理实现通过MD5来判断文件内容是否被更改过...

使用此方法非常准确。

也LS说的,只检测修改时间,不是很准确..

[ Last edited by bbsphixy on 2010-2-3 at 11:43 ]
作者: huangshuirun     时间: 2010-2-7 16:32
楼上确实可以做到.有没有更简单的.
作者: slore     时间: 2010-2-7 17:05
备份一份

FC /B 命令比较下

看返回值就行了。
作者: radem     时间: 2010-2-7 20:24
参考slore兄思路写的(有系统局限):
@echo off
set a=a.txt
set b=b.txt
fc /b %a% %b%|findstr "找不到相异处">nul 2>nul &&echo. %a% 与 %b% 相同&&pause&&exit
echo. %a% 与 %b% 不同
pause

作者: slore     时间: 2010-2-7 21:29
我本意是屏蔽回显(因为可能差距太多)
直接看 errorlevel
作者: bluewing009     时间: 2010-2-7 23:19
方法一:利用md5值+if 语句
方法二:备份文件对比,相关语句
         findstr /x /v /g:1.txt 2.txt>differ.txt
作者: huangshuirun     时间: 2010-2-11 00:20
谢谢各位出手