我的知识记录

如何修改文件属性时间(图文)

修改文件属性时间有多种方法,以下是针对不同操作系统和场景的详细解决方案:

1. Windows系统

使用命令提示符(CMD)


 
cmd
# 修改文件的修改时间 copy /b filename.txt +,, # 使用PowerShell更精确地修改时间 powershell "(Get-Item 'filename.txt').LastWriteTime = '2023-12-25 14:30:00'"

使用PowerShell


 
powershell
# 修改文件的最后写入时间 (Get-Item "filename.txt").LastWriteTime = "2023-12-25 14:30:00" # 修改创建时间 (Get-Item "filename.txt").CreationTime = "2023-12-25 14:30:00" # 修改访问时间 (Get-Item "filename.txt").LastAccessTime = "2023-12-25 14:30:00" # 批量修改多个文件 Get-ChildItem "C:\path\to\folder\*" | ForEach-Object { $_.LastWriteTime = "2023-12-25 14:30:00" }

使用图形界面

  1. 右键点击文件 → 属性
  2. 查看"常规"选项卡中的时间信息
  3. 注意:Windows资源管理器不允许直接编辑这些时间

2. Linux/macOS系统

使用touch命令


 
bash
# 修改文件的修改时间 touch -m -t 202312251430 filename.txt # 修改文件的访问时间 touch -a -t 202312251430 filename.txt # 同时修改访问时间和修改时间 touch -a -m -t 202312251430 filename.txt # 使用具体日期时间格式 touch -m -d "2023-12-25 14:30:00" filename.txt # 修改为当前时间 touch filename.txt # 批量修改 find /path/to/directory -name "*.txt" -exec touch -m -t 202312251430 {} \;

3. 编程方式修改

Python方式


 
python
import os import time from datetime import datetime # 方法1:使用os.utime()修改时间戳 def modify_file_time(filepath, year, month, day, hour=0, minute=0, second=0): # 创建时间戳 timestamp = time.mktime((year, month, day, hour, minute, second, 0, 0, 0)) # 修改文件的访问时间和修改时间 os.utime(filepath, (timestamp, timestamp)) # 使用示例 modify_file_time("document.txt", 2023, 12, 25, 14, 30, 0) # 方法2:使用pathlib (Python 3.4+) from pathlib import Path def modify_file_time_pathlib(filepath, dt): file_path = Path(filepath) timestamp = dt.timestamp() file_path.touch(times=(timestamp, timestamp)) # 使用示例 dt = datetime(2023, 12, 25, 14, 30, 0) modify_file_time_pathlib("document.txt", dt) # 方法3:分别修改访问时间和修改时间 import stat def modify_separate_times(filepath, access_time, modify_time): os.utime(filepath, (access_time.timestamp(), modify_time.timestamp())) # 使用示例 access_dt = datetime(2023, 12, 25, 10, 0, 0) modify_dt = datetime(2023, 12, 25, 14, 30, 0) modify_separate_times("document.txt", access_dt, modify_dt)

Node.js方式


 
javascript
const fs = require('fs'); // 修改文件时间戳 function modifyFileTime(filepath, date) { fs.utimes(filepath, date, date, (err) => { if (err) { console.error('修改文件时间失败:', err); } else { console.log('文件时间修改成功'); } }); } // 使用示例 const customDate = new Date('2023-12-25T14:30:00'); modifyFileTime('document.txt', customDate); // 异步方式 async function modifyFileTimeAsync(filepath, date) { try { await fs.promises.utimes(filepath, date, date); console.log('文件时间修改成功'); } catch (error) { console.error('修改文件时间失败:', error); } }

C#方式 (.NET)


 
csharp
using System; using System.IO; class Program { static void ModifyFileTime(string filepath, DateTime newTime) { // 修改最后写入时间 File.SetLastWriteTime(filepath, newTime); // 修改创建时间 File.SetCreationTime(filepath, newTime); // 修改最后访问时间 File.SetLastAccessTime(filepath, newTime); } static void Main() { DateTime newTime = new DateTime(2023, 12, 25, 14, 30, 0); ModifyFileTime("document.txt", newTime); } }

Java方式


 
java
import java.io.File; import java.util.Date; public class FileTimeModifier { public static void modifyFileTime(String filepath, long timestamp) { File file = new File(filepath); // 修改最后修改时间 boolean success = file.setLastModified(timestamp); if (success) { System.out.println("文件时间修改成功"); } else { System.out.println("文件时间修改失败"); } } public static void main(String[] args) { // 创建时间戳 (毫秒) long timestamp = new Date(2023-1900, 11, 25, 14, 30, 0).getTime(); modifyFileTime("document.txt", timestamp); } }

4. 批量处理工具

使用专业的批处理工具

BulkFileChanger (Windows)


 
cmd
# 命令行版本示例 BulkFileChanger.exe /ChangeTime /Time:"2023-12-25 14:30:00" /Files:"C:\path\to\files\*.*"

使用Python脚本批量处理


 
python
import os import time from pathlib import Path from datetime import datetime def batch_modify_file_times(directory, target_time, file_pattern="*"): """ 批量修改目录中文件的时间戳 :param directory: 目录路径 :param target_time: 目标时间 (datetime对象) :param file_pattern: 文件匹配模式 """ timestamp = target_time.timestamp() # 遍历目录中的文件 path = Path(directory) for file_path in path.rglob(file_pattern): if file_path.is_file(): try: os.utime(file_path, (timestamp, timestamp)) print(f"已修改: {file_path}") except Exception as e: print(f"修改失败 {file_path}: {e}") # 使用示例 target_time = datetime(2023, 12, 25, 14, 30, 0) batch_modify_file_times("./documents", target_time, "*.txt")

5. 高级用法

保持文件内容不变,只修改时间


 
bash
# Linux/macOS - 使用stat和touch结合 old_time=$(stat -c %Y filename.txt) touch -m -d "@$old_time" filename.txt

根据另一个文件的时间来设置


 
python
import os import shutil def copy_file_time(source_file, target_file): """ 将源文件的时间属性复制到目标文件 """ # 获取源文件的时间属性 stat_info = os.stat(source_file) access_time = stat_info.st_atime modify_time = stat_info.st_mtime # 应用到目标文件 os.utime(target_file, (access_time, modify_time)) # 使用示例 copy_file_time("source.txt", "target.txt")

使用GUI工具

  • Attribute Changer (Windows)
  • StampTracker (跨平台)
  • File Date Corrector (Windows)

6. 注意事项

  1. 权限要求: 修改系统文件可能需要管理员权限
  2. 时间格式: 注意不同系统的时间格式差异
  3. 备份重要文件: 修改前备份关键文件
  4. 审计影响: 修改时间戳可能影响备份和审计系统
  5. 法律合规: 确保修改行为符合相关法规要求

实际应用示例


 
python
import os import time from datetime import datetime, timedelta def organize_files_by_date(directory): """ 整理文件,按日期修改文件时间戳 """ for root, dirs, files in os.walk(directory): for file in files: file_path = os.path.join(root, file) # 根据文件名中的日期信息修改时间戳 # 假设文件名包含日期信息,如 "report_20231225.txt" if "_" in file and "." in file: try: date_part = file.split("_")[1].split(".")[0] if len(date_part) == 8: # YYYYMMDD格式 year = int(date_part[:4]) month = int(date_part[4:6]) day = int(date_part[6:8]) # 设置为当天中午12点 target_time = time.mktime((year, month, day, 12, 0, 0, 0, 0, 0)) os.utime(file_path, (target_time, target_time)) print(f"已更新 {file_path} 的时间戳") except: pass # 忽略无法解析的文件名 # 使用示例 organize_files_by_date("./reports")
选择合适的方法取决于你的具体需求、操作系统和技能水平。对于偶尔使用,命令行工具最为方便;对于批量处理或自动化任务,编程方式更为灵活。
 

如何修改文件属性时间(图文)

标签:

更新时间:2025-12-15 14:29:58

上一篇:上传图片修改大小宽高(图文)

下一篇:修改服务器上传文件时间(图文)