代码之家  ›  专栏  ›  技术社区  ›  Keng

如何以编程方式更改文件的创建、修改和访问日期?

  •  11
  • Keng  · 技术社区  · 17 年前

    我需要在Windows上更改文件的修改日期,这样它就不会扰乱我的排序顺序。我怎样才能用一个脚本做到这一点(将来可能还需要对文件做这一点)?

    顺便说一句:我不想安装应用程序来完成这个任务。

    5 回复  |  直到 8 年前
        1
  •  25
  •   Peter Mortensen Pieter Jan Bonestroo    8 年前

    如果您有PowerShell:

    $(Get-Item ).creationtime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
    $(Get-Item ).lastaccesstime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
    $(Get-Item ).lastwritetime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
    
        2
  •  6
  •   Peter Mortensen Pieter Jan Bonestroo    8 年前

    使用PowerShell时,命令为:

    PS C:\temp> (Get-Item Notes.txt).lastwritetime=$(Get-Date "1/2/2016 12:34 am")
    
    PS C:\temp> (Get-Item Notes.txt).creationtime=$(Get-Date "1/2/2016 12:34 am")
    
    PS C:\temp> (Get-Item Notes.txt).lastaccesstime=$(Get-Date "1/2/2016 12:34 am")
    

    Enter image description here

        3
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    8 年前

    下面是更改修改日期的vbscript示例:

    Sub ChangeModifiedDate(strFolder, strFile, dteNew)
    
        Dim oShell
        Dim objFolder
    
        Set oShell = CreateObject("Shell.Application")
        Set oFolder = oShell.NameSpace(strFolder)
        oFolder.Items.Item(strFile).ModifyDate = dteNew
    End Sub
    
        4
  •  2
  •   user1016765    8 年前

    在PowerShell中,您可以列出该文件,并使用该文件在一行中设置其属性。

    例如,使用通配符:

    (ls yourF*).lastWriteTime = (get-date).AddDays(-60)
    

    对于单个文件:

    (ls yourFile.doc).creationTime = (get-date).AddDays(-60)
    

    (上述命令假定您已将CD保存到文件的目录中。)

        5
  •  1
  •   Peter Mortensen Pieter Jan Bonestroo    8 年前

    使用Java可以做到:

    File file = new File("someFile");
    file.setLastModified(long time);