You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows命令行如何将文件修改时间设置为更早的指定时间?

纯Windows CMD下修改文件时间戳为更早时间的方案

嘿,这个问题问得好!你之前用的copy /b filename.ext +,,确实是CMD里快速把文件时间戳刷成当前时间的神操作,但要设置成更早的时间(比如提前1天、1周),纯CMD里没法像Linux的touch那样一步到位,但我们可以用原生命令的组合来实现,完全不需要PowerShell或者第三方工具,以下是两种实用的方法:

方法1:用copy+/d参数指定具体日期

copy命令其实有个隐藏的/d参数,允许你指定一个日期,配合+,,这种无实际复制的语法,就能直接把文件的修改时间改成你指定的日期。

举个例子,要把report.pdf的时间戳改成2024年5月20日,命令是:

copy /b report.pdf +,, /d:2024-05-20

小提醒:日期格式得跟着你的系统区域设置走,比如中文系统可能需要用/d:2024/05/20或者/d:05-20-2024,不确定的话先输入date命令看看系统默认的日期格式就行。

但如果你要相对当前时间偏移(比如提前1天、1周),纯CMD里没有直接的日期计算工具,这时候可以用forfiles来帮忙:

方法2:forfiles+copy实现相对时间偏移

forfiles是CMD自带的文件批量处理工具,它能自动处理日期偏移计算,完美解决相对时间的需求。

示例1:把文件时间戳提前1天

forfiles /m filename.ext /c "cmd /c copy /b @file +,, /d:@fdate-1"

这里的@fdate-1表示基于文件当前的修改日期减去1天,forfiles会自动帮你算好日期,不用你手动输入具体的年月日。

示例2:把文件时间戳提前1周(7天)

forfiles /m filename.ext /c "cmd /c copy /b @file +,, /d:@fdate-7"

不过要注意,这个方法只能处理天级别的偏移,如果需要精确到小时/分钟,纯CMD里的方案会比较繁琐(比如得临时改系统时间再刷时间戳,还需要管理员权限),但如果你的需求是天或周级别的调整,这个方法完全够用。

补充:用robocopy实现精确时间同步

如果需要精确到小时甚至分钟的时间戳调整,可以试试robocopy(Windows原生自带,不用额外装):

  1. 先创建一个临时文件,把它的时间戳改成你想要的目标时间(比如先临时修改系统时间,再用copy /b temp.txt +,,刷时间,改系统时间需要管理员权限);
  2. 然后用robocopy把临时文件的时间同步到目标文件:
robocopy . . filename.ext /COPY:T /R:0 /W:0

/COPY:T表示只复制时间戳,/R:0/W:0是让命令不重试、不等待,执行完删掉临时文件就行。这个步骤稍微麻烦点,但胜在能精确控制时间。


内容的提问来源于stack exchange,提问作者Dan Hall

火山引擎 最新活动