【问题标题】:Modifying folder without modifying timestamp修改文件夹而不修改时间戳
【发布时间】:2015-01-19 17:50:08
【问题描述】:

我想更改文件夹内容而不更改修改日期

我有时会对旧文件夹进行清理,尝试腾出空间或清理临时文件和死胡同,或者添加相关链接或标签以方便查找。当我这样做时,我不想将文件夹更改为修改日期:今天 2015,因为我的文件夹按 修改日期 排序。 2010 年的项目应保留其上次修改日期为 2010 年的时间戳,因为我只进行了元更改,而不是实际更改。

目前我使用SK TimestampAttribute Changer。我在要更改之前右键单击每个文件夹,保持“属性”窗口打开,进行修改,然后单击“应用”以覆盖原始时间戳。

我想更自动化地完成它,例如在根文件夹 D:\Workspace 上设置 清理模式,直到我弹出该状态,任何时间戳都不会改变在子目录Project2010Project2013...、Project2015

或者至少能够复制两个文件之间的时间戳。就像在this answer 中提到@COPY /B %1+,, %1,但不是当前日期。 用法如:touch D:\Temp\Project2010\Source.txt Destination.ext

【问题讨论】:

  • 您正在修改文件夹的内容,因此文件夹的修改时间戳也会更新。:stackoverflow.com/questions/1025187/…
  • 您可以将系统日期和时间更改为您希望保留的日期时间,然后进行更改,然后w32tm /resync 将时间设置回当前。

标签: windows date batch-file touch file-attributes


【解决方案1】:

我在上面评论了一些建议——一个涉及修改系统的日期/时间,另一个涉及robocopy。系统日期/时间一有点麻烦,需要上网,在我的测试中robocopy /dcopy:t开关根本不起作用。

但我还是找到了更好的解决方案。使用for 循环将文件夹的日期时间捕获到变量中。然后在您进行任何您希望的更改后,使用powershell 将文件夹的日期/时间恢复原状。

@echo off
setlocal

set "dir=path\to\directory"
for %%I in (%dir%) do set "datetime=%%~tI"

:: Do whatever deletions and other maintenance you want here.

:: Then after all changes have completed, reset the dir timestamp.
powershell -command "(Get-Item '%dir%').LastWriteTime=(Get-Date '%datetime%')"

【讨论】:

    猜你喜欢
    • 2014-10-11
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多