我的知识记录

如何修改文件的时间(图文)

修改文件时间主要有三种类型:访问时间(access time)、修改时间(modification time)和创建时间(creation time)。以下是不同平台和方法的详细说明:

Windows 系统

PowerShell 方法


 
powershell
# 修改文件的最后修改时间 (Get-Item "filename.txt").LastWriteTime = "2023-12-25 14:30:00" # 修改最后访问时间 (Get-Item "filename.txt").LastAccessTime = "2023-12-25 14:30:00" # 修改创建时间(部分文件系统支持) (Get-Item "filename.txt").CreationTime = "2023-12-25 14:30:00" # 批量修改多个文件 Get-ChildItem "*.txt" | ForEach-Object { $_.LastWriteTime = "2023-12-25 14:30:00" }

命令行方法


 
cmd
# 更新文件时间为当前时间 copy filename.txt+,, /b

Linux/Unix/macOS 系统

touch 命令


 
bash
# 修改访问时间和修改时间为当前时间 touch filename.txt # 设置特定日期时间 touch -d "2023-12-25 14:30:00" filename.txt # 只修改访问时间 touch -a -d "2023-12-25 14:30:00" filename.txt # 只修改修改时间 touch -m -d "2023-12-25 14:30:00" filename.txt # 使用时间戳格式 MMDDhhmmYYYY touch -t 122514302023 filename.txt # 同时修改多个文件 touch -d "2023-12-25 14:30:00" *.txt

编程语言实现

Python


 
python
import os import time from datetime import datetime def modify_file_times(filepath, access_time=None, modify_time=None): """ 修改文件的访问时间和修改时间 :param filepath: 文件路径 :param access_time: 访问时间字符串,如 "2023-12-25 14:30:00" :param modify_time: 修改时间字符串,如 "2023-12-25 14:30:00" """ # 获取当前文件时间作为默认值 stat = os.stat(filepath) current_atime = stat.st_atime current_mtime = stat.st_mtime # 转换指定时间 if access_time: atime = time.mktime(datetime.strptime(access_time, "%Y-%m-%d %H:%M:%S").timetuple()) else: atime = current_atime if modify_time: mtime = time.mktime(datetime.strptime(modify_time, "%Y-%m-%d %H:%M:%S").timetuple()) else: mtime = current_mtime # 设置文件时间 os.utime(filepath, (atime, mtime)) # 使用示例 modify_file_times("example.txt", access_time="2023-12-25 10:00:00", modify_time="2023-12-25 14:30:00")

Java


 
java
import java.io.File; import java.nio.file.Files; import java.nio.file.attribute.FileTime; import java.time.LocalDateTime; import java.time.ZoneId; public class FileTimeModifier { public static void setFileTimes(String filePath, String accessTime, String modifyTime) { try { File file = new File(filePath); if (accessTime != null) { LocalDateTime atime = LocalDateTime.parse(accessTime.replace(" ", "T")); FileTime accessFileTime = FileTime.from(atime.atZone(ZoneId.systemDefault()).toInstant()); // 注意:Java 中设置单独的访问时间较为复杂,通常一起设置 } if (modifyTime != null) { LocalDateTime mtime = LocalDateTime.parse(modifyTime.replace(" ", "T")); FileTime modifyFileTime = FileTime.from(mtime.atZone(ZoneId.systemDefault()).toInstant()); Files.setLastModifiedTime(file.toPath(), modifyFileTime); } System.out.println("文件时间修改成功"); } catch (Exception e) { System.err.println("修改文件时间失败: " + e.getMessage()); } } public static void main(String[] args) { setFileTimes("example.txt", null, "2023-12-25 14:30:00"); } }

C#


 
csharp
using System; using System.IO; class FileTimeManager { public static void SetFileTimes(string filePath, DateTime? accessTime = null, DateTime? writeTime = null) { try { FileInfo fileInfo = new FileInfo(filePath); if (accessTime.HasValue) { fileInfo.LastAccessTime = accessTime.Value; } if (writeTime.HasValue) { fileInfo.LastWriteTime = writeTime.Value; } Console.WriteLine("文件时间设置成功"); } catch (Exception ex) { Console.WriteLine($"设置文件时间失败: {ex.Message}"); } } static void Main() { DateTime targetTime = new DateTime(2023, 12, 25, 14, 30, 0); SetFileTimes("example.txt", targetTime, targetTime); } }

高级技巧

批量修改文件时间


 
bash
# Linux/Unix: 批量修改目录下所有文件 find /path/to/directory -type f -exec touch -d "2023-12-25 14:30:00" {} \; # PowerShell: 批量修改 Get-ChildItem -Recurse | ForEach-Object { $_.LastWriteTime = "2023-12-25 14:30:00" }

根据另一个文件设置时间


 
bash
# Linux: 将file1的时间复制给file2 touch -r file1 file2 # PowerShell: 复制时间属性 $referenceFile = Get-Item "reference.txt" $targetFile = Get-Item "target.txt" $targetFile.LastWriteTime = $referenceFile.LastWriteTime

注意事项

  1. 权限要求: 需要有文件的写入权限才能修改时间属性
  2. 时间格式: 确保使用正确的日期时间格式
  3. 时区处理: 不同系统可能有不同的时区处理方式
  4. 文件系统差异: 某些文件系统可能不支持修改创建时间
  5. 精度问题: 不同系统的文件时间精度可能不同(秒级 vs 纳秒级)
选择哪种方法取决于你的具体需求、操作系统环境以及是否需要程序化处理。
 

如何修改文件的时间(图文)

标签:

更新时间:2025-12-18 13:39:03

上一篇:文件修改日期怎么改成想要的日期(图文)

下一篇:windows怎么修改文件日期(图文)