文件的创建时间可以修改吗(图文)
是的,文件的创建时间可以修改,但方法因操作系统而异。以下是各种系统和编程语言的解决方案:
1. Windows 系统
PowerShell 方式:
powershell
# 修改文件创建时间 $file = Get-Item "myfile.txt" $file.CreationTime = "2024-01-01 14:30:00" # 修改最后写入时间 $file.LastWriteTime = "2024-01-01 14:30:00" # 修改最后访问时间 $file.LastAccessTime = "2024-01-01 14:30:00"命令行方式:
cmd
# 需要第三方工具如 nircmd nircmd setfiletime "myfile.txt" "01-01-2024 14:30:00" "01-01-2024 14:30:00"批处理脚本:
batch
@echo off powershell "$file = Get-Item '%~1'; $file.CreationTime = '%~2'"2. Linux/macOS 系统
Linux 系统本身不存储创建时间(只有修改时间、访问时间和状态改变时间)。macOS 支持创建时间。macOS 终端:
bash
# 使用 SetFile 命令(需要安装 Xcode Command Line Tools) SetFile -d '01/01/2024 14:30:00' myfile.txt # 修改创建时间 SetFile -m '01/01/2024 14:30:00' myfile.txt # 修改修改时间 # 或使用 touch 命令修改访问和修改时间 touch -t 202401011430 myfile.txt3. 编程语言实现
Python:
python
import os from datetime import datetime import platform def change_creation_time(filepath, new_time): """ 修改文件创建时间(跨平台) """ if isinstance(new_time, str): new_time = datetime.strptime(new_time, "%Y-%m-%d %H:%M:%S") timestamp = new_time.timestamp() # Windows 系统 if platform.system() == 'Windows': import win32file import pywintypes # 打开文件 handle = win32file.CreateFile( filepath, win32file.GENERIC_WRITE, 0, None, win32file.OPEN_EXISTING, 0, None ) # 设置创建时间 win32file.SetFileTime(handle, pywintypes.Time(new_time)) handle.Close() # Unix/Linux 系统只能修改访问时间和修改时间 elif platform.system() in ['Linux', 'Darwin']: os.utime(filepath, (timestamp, timestamp)) # 示例使用 change_creation_time('myfile.txt', '2024-01-01 14:30:00')JavaScript (Node.js):
javascript
const fs = require('fs'); // Node.js 本身不能直接修改创建时间,但可以修改访问和修改时间 function changeFileTimes(filepath, accessTime, modifyTime) { fs.utimes(filepath, accessTime, modifyTime, (err) => { if (err) throw err; console.log('文件时间已修改'); }); } // 对于 Windows,可以使用 node-windows 包 // npm install node-windows /* const { exec } = require('child_process'); function changeCreationTimeWindows(filepath, newDateTime) { const cmd = `powershell "Get-Item '${filepath}' | %{$_.CreationTime = '${newDateTime}'}"`; exec(cmd, (error, stdout, stderr) => { if (error) { console.error(`执行错误: ${error}`); return; } console.log('创建时间修改成功'); }); } */C# (.NET):
csharp
using System; using System.IO; class Program { static void Main() { string filePath = @"C:\path\to\myfile.txt"; DateTime newTime = new DateTime(2024, 1, 1, 14, 30, 0); // 修改创建时间 File.SetCreationTime(filePath, newTime); // 修改最后写入时间 File.SetLastWriteTime(filePath, newTime); // 修改最后访问时间 File.SetLastAccessTime(filePath, newTime); Console.WriteLine("文件时间修改成功"); } }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 FileTimeChanger { public static void changeCreationTime(String filepath, LocalDateTime newTime) { try { File file = new File(filepath); // 转换为 FileTime FileTime fileTime = FileTime.from( newTime.atZone(ZoneId.systemDefault()).toInstant() ); // 修改基本属性 Files.setAttribute(file.toPath(), "basic:creationTime", fileTime); Files.setAttribute(file.toPath(), "basic:lastModifiedTime", fileTime); Files.setAttribute(file.toPath(), "basic:lastAccessTime", fileTime); System.out.println("文件时间修改成功"); } catch (Exception e) { System.err.println("修改失败: " + e.getMessage()); } } public static void main(String[] args) { changeCreationTime("myfile.txt", LocalDateTime.of(2024, 1, 1, 14, 30)); } }4. 第三方工具
Windows:
- Attribute Changer: 图形界面工具
- BulkFileChanger: NirSoft 提供的免费工具
- File Date Touch: 专用时间修改工具
macOS:
- A Better Finder Attributes: 强大的文件属性管理工具
- Name Mangler: 批量重命名和属性修改工具
跨平台:
- ExifTool: 主要用于媒体文件,但也支持通用文件时间修改
注意事项:
- 权限要求: 修改系统文件可能需要管理员权限
- 系统差异: Linux 不存储传统意义上的创建时间
- 备份建议: 修改重要文件前进行备份
- 应用影响: 时间更改可能影响备份软件、同步工具等的行为

更新时间:2025-12-15 14:55:22
下一篇:如何修改文件夹的修改时间(图文)
