如何更改文件上的时间戳?

Joe*_*sen 90 windows timestamp sysinternals

可能重复:
如何修改 dll 或 exe 中的时间戳?
Windows 相当于 Linux 命令“touch”?

如何通过命令行将文件的时间戳设置为特定日期?

我的具体情况是 Windows 7。

Joe*_*sen 114

由于威廉杰克逊的回答,我在 Stack Overflow 上发现了一个类似的问题

接受的答案各国使用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")
Run Code Online (Sandbox Code Playgroud)

编辑

两个例子:

(这个来自评论:)将文件的最后访问时间设置为aaa.csv当前时间:

$(Get-Item aaa.csv).lastwritetime=$(Get-Date)
Run Code Online (Sandbox Code Playgroud)

将文件的创建时间设置为foo.txt2015 年 11 月 24 日早上 6 点:

$(Get-Item foo.txt).creationtime=$(Get-Date "11/24/2015 06:00 am")
Run Code Online (Sandbox Code Playgroud)

  • 一个轻微的递归变体,虽然更短,但可读性较差:“gci -rec | %{ $_.lastWriteTime = ($_.lastAccessTime = ($_.creationTime = (get-date "2011-09-14T07: 10:00"))) }" (12认同)
  • 对于不太了解 Powershell 的人,您必须将文件名放在 Get-Item 之后。您还可以省略 Get-Date 之后的字符串以将属性设置为当前日期/时间,就像 touch 命令的默认行为一样。最后,您可以将该代码作为参数传递给 powershell 命令,使其仅从现有批处理文件中执行该代码。示例:`powershell $(Get-Item aaa.csv).lastwritetime=$(Get-Date)` (11认同)
  • 日期和时间格式不是按照命令,而是系统范围的格式(因此,在我的系统中,它是 dd/mm/yyy)。 (5认同)
  • 对于目录中的每个文件:`Get-ChildItem -File | foreach { $_.CreationTime=$(获取日期) }` (3认同)
  • 如果我想对目录中的每个文件都这样做怎么办? (2认同)

Wil*_*son 49

请参阅此问题的答案。

具体来说,这可以通过以下方式本地完成:

copy /b filename.ext +,,
Run Code Online (Sandbox Code Playgroud)

这会将时间戳设置为当前时间。

copy命令的文档位于 TechNet 上

逗号表示省略了Destination参数。

  • 我没有看到这如何帮助我为文件选择新日期? (10认同)
  • 你能解释一下这是如何工作的吗?什么是`+,,`?我怎么知道它被设置为哪个日期? (4认同)
  • 主要问题是当文件不在当前目录中时...它会将文件复制到当前目录而不是“触摸”它就位。 (2认同)
  • @KaseySpeakman - 此命令依赖于当前目录。在命令之前使用`pushd FILEDIR`,在命令之后使用`popd` (2认同)

boo*_*t13 25

Nirsoft来救援:试试免费软件工具nircmd。它是一个小型命令行程序中的一堆有用工具。其中一个命令允许您指定created timemodified time 之一或两者,如下所示:

nircmd.exe setfiletime "c:\temp\myfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"

  • 此外,如果您想将时间从一个文件传输到另一个文件,clonefiletime filefrom fileto 效果最佳! (4认同)

Joe*_*sen 21

使用 Cygwin,将 test.txt 的时间戳设置为 2000 年 1 月 31 日,在 00:01.00:

touch -t 200001310001.00 test.txt
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说非常有效,`touch -t 201608221400 filename` 将其设置为 22.08.2016 14:00:00。 (3认同)