文档章节

【开源工具】文件时间修改

如比如比
 如比如比
发布于 2017/03/02 21:01
字数 1711
阅读 1348
收藏 0

文件时间修改

Windows下的文件时间有三种:创建时间、最后一次修改时间、最后一次访问时间。文件夹(目录)和文件一样,除此之外,还有个MFT修改时间,一般用不到,在此不谈。可是,在Windows资源管理器(或文件管理器)里,通过查看属性只能看到文件夹的创建时间,看不到另外两个。

创建时间,是指系统建立文件的时间,是系统通过CreateFile函数创建文件的时间,创建之后,文件创建时间就不会再改变。

最后一次修改时间,是系统最后一次调用WriteFile对目标文件进行改写的时间,只要调用WriteFile成功,就算文件内容没有发生变化,文件的修改时间也依旧会改变。

这两种都好理解,然而最后一次访问时间是什么呢?很多人可能不知道,以为是打开文件的时间,或是读取文件的时间,要是这样它就和修改时间就没什么太大的区别了,其实访问时间也是创建时间的一种,确切地说,文件的最后访问时间是文件的“物理创建时间”,或者说是在不同的分区下创建文件的时间。在NTFS分区,当一个文件在同一分区下面移动时,这个文件的物理位置其实并没有发生变化,变的只是MFT(主文件表)里的记录,也就是指向此文件的链接或路径变了,所以在同一分区下面移动文件一般是瞬间完成的,而在不同分区下面移动文件时,系统就必须在新的分区重新在MFT中为该文件建一条记录,之后再把原MFT中的创建时间登记在新分区的文件表中,所以我们说,所谓创建时间,其实是逻辑上的时间,但该文件在物理上确实被重新建立了数据,所以就取名“访问时间”。所以,所谓访问时间,就是指该文件在新分区创建的时间,当一个文件移动到了另一个分区,它的访问时间就会发生变化。通过查看访问时间,我们可以知道文件是否被移动过(物理上的移动或不同分区之间的移动,同一分区下面移动不算)。

    排除第三方软件和系统时间的作用,一个文件刚被创建时,三个时间是一样的,当它移动到另一个位置后,创建时间和修改时间不变,访问时间可变可不变;当它复制到另一个位置后,创建时间和访问时间改变,修改时间仍然不变。反之可推,三时间相同,说明文件自创建后没有被复制、改写和移动(不同分区);修改时间大于创建时间,文件一定被修改过,修改时间小于创建时间,文件一定被复制过,访问时间大于创建时间,文件一定被移动过。

    文件夹的时间和文件稍有不同,首先文件夹不能离开它所在的分区,复制或移动到另一分区,创建时间就会发生改变,其次,文件夹的修改时间是指它的目录里面最后一次进行创建、删除、重命名等操作的时间,如果在它里面创建其它文件或文件夹,或者改变目录内的文件名,移走其中一个文件或目录,它的修改时间和访问时间都会发生变化,在这一点上,文件夹的修改时间和访问时间似乎是一样的。不过,只有子目录的改变才是有效的,如果是子目录的子目录则对该目录而言,改变的不是它,而是它的子目录。对于文件夹而言,若三时间相同,如果是空文件夹则说明它被创建后里面从没有放进去过东西,如果里面有文件或文件夹,则说明它一定是被复制过的,而且从复制后就再也没有改动过里面的东西(创建、删除、移走或重命名)。如果创建时间和修改时间不一致,说明文件夹被改动过。  

    要修改文件时间,除了用软件,其实我们可以自己解决,比如改变创建时间,首先把系统时间调整到接近那个时间,然后等快到时间时,快速复制一个副本即可,不过要首先看下文件大小,然后根据它的大小确定什么时候开始复制,复制后再删除源文件,这样就相当于间接改变了文件的创建时间。改变修改时间的话,如果文件是文本之类好办,如果是其它格式如EXE等,就不行了,只能用软件来实现。访问时间前面说过了,同样还是先调整系统时间,然后把目标文件复制到另一个盘,等时间到了立即复制回来。另外,文件时间是精确到毫秒(ms)的,如果要对比两个文件的时间是否相同等,就要用到第三方软件了,方法就是使用CompareFileTime这个系统API。

 

能够修改文件时间的第三方软件有如下几种:

文件创建日期修改器 FileTime

http://down.tech.sina.com.cn/content/47339.html

 

NewFileTime – 批量修改文件创建/访问/修改日期

http://www.appinn.com/newfiletime/

http://softwareok.com/?seite=Microsoft/NewFileTime

 

现在,这方面又多了新成员:chgfldt

■开发背景:

在用commons-net的FTP功能下载来文件的时间是新的时间,和服务器上的是不一样的。为了使下载后的文件时间和服务器上的一致,开发了这个利器。

 

■用法:

chgfldt /H

Change File Date Time Version 0.0.1 Compiled on March 1 2017 for Windows

Copyright (C) 2017 Dubenju(dubenju@126.com). All rights reserved.

 

Usage:

  chgfldt [/D | /H] /F:filename [options]

 

    /D:sisplay the file's datetime informations.

    /H:show this.

    /F:the targer file.

 

    options:

        /CD: Created date(format:yyyy-mm-dd).

        /AD:Accessed date(format:yyyy-mm-dd).

        /MD:Modified date(format:yyyy-mm-dd).

        /CT: Created time(format:hh:mi:ss).

        /AT:Accessed time(format:hh:mi:ss).

        /MT:Modified time(format:hh:mi:ss).

 

  Return Value:

    0:Normal end.

   -1:file open error.

   -2:file is null.

   -3:GetFileTime error.

   -4:Created error.

   -5:Modified error.

   -6:Accessed error.

   -7:SetFileTime error.

 

还等什么,赶紧下载下来使劲用吧!

■下载

开源中国码云:https://git.oschina.net/dubenju/chgdt.git

GitHub:https://github.com/dubenju/chgdt.git

Sourceforge:https://sourceforge.net/projects/chgfldt/

国内外同步上线哦!

 

不过毕竟是概念版,欢迎涂鸦!

 

© 著作权归作者所有

如比如比
粉丝 126
博文 178
码字总数 286951
作品 0
日本
程序员
私信 提问
加载中

评论(2)

如比如比
如比如比 博主

引用来自“ejzhang”的评论

何不用touch?

@ejzhang 以前的日期,该系统日期后再touch,在设回来哈
ejzhang
ejzhang
何不用touch?
【开源工具】sync-deploy命令工具:让远程命令操作更简单

【工具Github主页】 该命令集可以非常方便地向远程主机/服务器上传文件、运行远程脚本、下载文件等。 目录: 目的 下载与使用 准备与配置 命令说明 计算操作实例 目的 交互式地输入ssh、scp...

王诗翔
2018/01/31
0
0
Linux下的三个时间属性

Linux下的文件有三个时间属性。分别为atime、ctime、mtime。 atime:access time,即文件的最近一次访问时间。 ctime:change time,即文件的最近一次改变时间(这里并非create time创建时间...

cy_lyh
2016/05/15
0
0
在 Linux 下 9 个有用的 touch 命令示例

命令用于创建空文件,也可以更改 Unix 和 Linux 系统上现有文件时间戳。这里所说的更改时间戳意味着更新文件和目录的访问以及修改时间。 让我们来看看 命令的语法和选项: 语法: 命令中使用...

作者: Pradeep Kumar
2018/05/02
0
0
理解 atime mtime ctime

首先可以使用stat 命令来查询文件的inode信息,其中包括ctime atime mtime Mtime:文件内容改变,ctime文件的状态改变,如chmod权限等。 调整mtime,ctime会变。调整ctime,mtime不一定变化。...

香胖
2015/12/04
152
0
find选项详解

查找文件,可以使用whereis、locate命令。 实际排查问题时,查找特定时间变动过的文件,查找与给定文件有时间关系的文件就需要使用更加强大的查找命令find。 whereis 选项 -b:查找二进制可执...

youshine
2015/06/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SQL性能优化

SQL性能优化 一、SQL的执行顺序 顺序:FROM——ON——JOIN——WHERE——GROUP BY——SUM、COUNT——HAVING——SELECT——DISTINCT——ORDER BY——LIMIT 与写SQL的顺序不同,SQL的执行顺序并...

一字见心
1分钟前
2
0
x001-版本介绍

python版本介绍 目前有2 和 3 有很多企业用的代码是2版本,随着技术的发展,以后用3的会成为大趋势 python3的安装 yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-d...

侠客行之石头
4分钟前
2
0
聊聊rocketmq的TransientStorePool

序 本文主要研究一下rocketmq的TransientStorePool TransientStorePool rocketmq-all-4.6.0-source-release/store/src/main/java/org/apache/rocketmq/store/TransientStorePool.java publi......

go4it
昨天
5
0
笔记

场外借贷, 质押 ,托管, 永续合约. 场外借贷,n签合同. 新功能 证券交易组负责中信证券机构及个人投资交易相关系统,服务机构及个人投资客户, 涉及到两融、期权、 期货、做市等境内境外创新业...

MtrS
昨天
5
0
Pycharm最新激活码2019----亲测可用

今天来讲解下pycharm的激活码使用 其实非常简单 把激活码填入下面的地方即可。如果不知道在哪里,那么就选菜单栏里的help再选Register就会弹出下面的界面 激活码网址里面有 lookdiv.com 里面...

chenhongjiang
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部