Windows 为每个文件和文件夹维护三个不同的日期/时间戳。它们是“创建日期”、“修改日期”和“访问日期”。在某些情况下,您可能必须更改文件或文件夹的修改、创建或上次访问的时间戳。
例如,在撰写有关文件夹比较和同步的文章时,我不得不更改某些文件的时间戳来测试 Robocopy 同步方法。其他用户可能需要更改文件的日期或时间以进行备份或归档。
让我们看看一些方法来更改本文中文件的创建日期、修改日期或上次访问日期。
更改文件或文件夹时间戳
要使用 PowerShell 更改文件日期,您需要运行以下命令:
更改名为 log1.txt 的文件的创建日期/时间戳:
(Get-Item "D:\Test\log1.txt").CreationTime=("3 August 2019 17:00:00")
更改名为 log1.txt 的文件的最后写入日期/时间戳:
(Get-Item "D:\Test\log1.txt").LastWriteTime=("3 August 2019 17:10:00")
更改名为 log1.txt 的文件的最后访问日期/时间戳:
(Get-Item "D:\Test\log1.txt").LastAccessTime=("3 August 2019 17:10:00")
更改名为 Test 的文件夹中所有文件的日期/时间戳:
要更改文件夹中所有文件的时间戳,请使用以下语法:
Get-ChildItem -force d:\test\ * | ForEach-Object{$_.CreationTime = ("3 August 2019 17:00:00")}
Get-ChildItem -force d:\test\ * | ForEach-Object{$_.LastWriteTime = ("3 August 2019 17:10:00")}
Get-ChildItem -force d:\test\ * | ForEach-Object{$_.LastAccessTime = ("3 August 2019 17:10:00")}
请注意,上述命令会更改文件夹中每个文件和子文件夹的时间戳。要仅对文件应用更改(即排除子文件夹),请使用以下语法:
Get-ChildItem -force d:\test\ * | Where-Object {! $_.PSIsContainer} | ForEach-Object{$_.CreationTime = ("3 August 2019 17:00:00")}
Get-ChildItem -force d:\test\ * | Where-Object {! $_.PSIsContainer} | ForEach-Object{$_.LastWriteTime = ("3 August 2019 17:10:00")}
Get-ChildItem -force d:\test\ * | Where-Object {! $_.PSIsContainer} | ForEach-Object{$_.LastAccessTime = ("3 August 2019 17:10:00")}
更改“文件夹”的最后写入日期/时间戳
(Get-Item "D:\Test\").LastWriteTime=("3 August 2019 17:00:00")
查看文件夹中所有文件的创建、修改和上次访问日期
要查看文件夹中所有文件的修改日期、创建日期和上次写入日期数据,请使用以下命令行语法:
Get-ChildItem -force "D:\Test\" | Select-Object Name, CreationTime, LastWriteTime, LastAccessTime
(或者)
foreach ($objFile in Get-ChildItem "D:\Test\*.*") { '"' + $objFile.Name + '" | ' + $objFile.CreationTime + ' | ' + $objFile.LastWriteTime + ' | ' + $objFile.LastAccessTime}
你会看到这样的输出:
"log1.txt" | 08/03/2019 17:00:00 | 08/03/2019 17:10:00 | 08/03/2019 17:10:00
"log2.txt" | 08/03/2019 17:00:00 | 08/03/2019 17:10:00 | 08/03/2019 17:10:00
"log3.txt" | 08/03/2019 17:00:00 | 08/03/2019 17:10:00 | 08/03/2019 17:10:00
"log4.txt" | 08/03/2019 17:00:00 | 08/03/2019 17:10:00 | 08/03/2019 17:10:00
使用来自 Nirsoft.net 的多功能命令行工具 NirCmd,您可以更改文件日期和时间戳。
这是使用 NirCmd 更改文件时间戳的命令行语法:
nircmd.exe setfiletime [filename or wildcard] [Created Date] {Modified Date} {Accessed Date}
dd-mm-yyyy hh:mm:ss
”。"now"
为日期参数,则将使用当前日期和时间。例子
nircmd.exe setfiletime "d:\test\log1.txt" "03/08/2019 17:00:00" "" "03/08/2019 17:10:00"
nircmd.exe setfiletime "d:\test\log2.txt" now now now
nircmd.exe setfiletime "d:\test\log3.txt" now "" now
nircmd.exe setfiletime "d:\test\log4.txt" "03/08/2019 17:00:00" "03/08/2019 17:10:00" now
要更改文件夹中所有文本文件的时间戳,以下是命令行语法:
nircmd.exe setfiletime "d:\test\*.txt" "03/08/2019 17:00:00" "03/08/2019 17:10:00" "03/08/2019 17:10:00"
BulkFileChanger是 Nirsoft.net 的另一个有用工具,可以修改一个或多个文件的创建、修改或访问时间。它还可以批量更改文件属性(只读、隐藏、系统)。
启动 BulkFileChanger 并将文件添加到其中。将文件添加到列表时,您可以选择在子文件夹中添加文件并相应地设置递归级别。
选择所有文件,然后单击操作菜单中的更改时间/属性。
您可能需要先取消选中在 GMT 中指定的时间,因为我们大多数人更喜欢输入本地时间而不是 GMT。
输入创建、修改或访问的日期/时间。要在所有字段中填写当前时间,请单击下面的“填写当前时间”按钮。
对于从相机拍摄的图像,EXIF 或元数据字段包含拍摄日期字段,该字段与 NTFS 的日期修改/创建数据分开。您可以从 JPG 文件的属性或使用来自 Nirsoft.net 的ExifDataView实用程序查看 EXIF 数据。
也就是说,BulkFileChanger 还允许您更改拍摄日期时间戳(EXIF 元数据)。要更改日期元数据,请单击“无更改”按钮,然后选择适当的选项。
EXIF – Generated Time对应于 Date Taken 元数据,该字段显示在 File Explorer 的Date列下。此外,许多程序将此值用作图片的官方日期/时间。
请注意,仅当日期/时间值已存在于 .jpg 文件中时,您才能更改相机图像的 EXIF 日期。BulkFileChanger 无法将新字段添加到 EXIF 数据中。
并且,您还可以选择从修改、创建、访问、退出 - 生成时间、退出 - 存储时间或退出 - 修改时间复制时间戳,并将其自动应用于其他日期字段。
命令行支持
BulkFileChanger 还支持命令行操作,因此您不必每次都打开 GUI。查看BulkFileChanger主页以获取命令行帮助/支持的参数列表。
Attribute Changer 是一个出色的免费软件程序,它可以执行以下操作:
您可以从以下位置下载属性更改器https://www.petges.lu/
安装程序后,您需要做的就是选择一个文件或文件夹或多个项目,然后选择更改属性上下文菜单条目。
更改所选文件和/或文件夹的日期和时间戳。如果您要使用高级(过滤器)操作,最好先在模拟模式下运行它,以确保结果完美。
Attribute Changer 还将操作(每个文件和文件夹修改)记录到一个制表符分隔的文本文件中,该文件可以导入 Excel。