如何修改日期上传文件 文件保存时间可以修改不
如何修改日期上传文件
1. 上传前修改文件时间戳
Windows PowerShell 方法:
powershell
# 修改单个文件为指定日期 (Get-Item "document.pdf").LastWriteTime = "2024-03-15 10:30:00" # 批量修改多个文件 Get-ChildItem *.pdf | ForEach-Object { $_.LastWriteTime = "2024-03-15 10:30:00" } # 修改为当前时间 (Get-Item "document.pdf").LastWriteTime = Get-DateLinux/Unix 方法:
bash
# 修改为特定日期时间 touch -d "2024-03-15 10:30:00" document.pdf # 修改为当前时间 touch document.pdf # 批量修改 touch -d "2024-03-15 10:30:00" *.pdf *.doc *.txt2. Python 脚本自动化修改
python
import os import glob from datetime import datetime import time def modify_files_before_upload(file_patterns, target_date): """ 在上传前修改文件时间戳 :param file_patterns: 文件模式列表,如 ['*.pdf', '*.docx'] :param target_date: 目标日期时间字符串,如 '2024-03-15 10:30:00' """ target_datetime = datetime.strptime(target_date, '%Y-%m-%d %H:%M:%S') timestamp = time.mktime(target_datetime.timetuple()) for pattern in file_patterns: files = glob.glob(pattern) for file in files: try: os.utime(file, (timestamp, timestamp)) print(f"已将 {file} 的修改时间改为 {target_date}") except Exception as e: print(f"修改 {file} 失败: {e}") # 使用示例 file_patterns = ['*.pdf', '*.docx', '*.txt'] modify_files_before_upload(file_patterns, '2024-03-15 10:30:00')3. 批处理脚本(Windows)
batch
@echo off setlocal enabledelayedexpansion REM 设置目标日期时间 set "TARGET_DATE=2024-03-15 10:30:00" REM 批量修改PDF文件 for %%f in (*.pdf) do ( echo 修改 %%f 的时间戳 copy /b "%%f"+,, >nul powershell "(Get-Item '%%f').LastWriteTime = '%TARGET_DATE%'" ) echo 文件时间戳修改完成! pause4. Shell 脚本(Linux/Mac)
bash
#!/bin/bash # 设置目标日期 TARGET_DATE="2024-03-15 10:30:00" # 修改指定类型文件的时间戳 for file in *.pdf *.doc *.docx *.txt; do if [ -f "$file" ]; then touch -d "$TARGET_DATE" "$file" echo "已修改 $file 的时间戳为 $TARGET_DATE" fi done echo "所有文件时间戳修改完成!"文件保存时间可以修改吗?
是的,文件保存时间可以修改!
1. 文件系统级别的修改
Windows:
powershell
# 修改最后修改时间 (Get-Item "filename.txt").LastWriteTime = "2024-12-25 15:30:00" # 修改创建时间 (Get-Item "filename.txt").CreationTime = "2024-12-25 15:30:00" # 修改最后访问时间 (Get-Item "filename.txt").LastAccessTime = "2024-12-25 15:30:00"Linux:
bash
# 修改修改时间 (-m) 和访问时间 (-a) touch -m -d "2024-12-25 15:30:00" filename.txt touch -a -d "2024-12-25 15:30:00" filename.txt # 同时修改两者 touch -d "2024-12-25 15:30:00" filename.txt2. 不同时间属性说明
| 时间属性 | Windows | Linux | 说明 |
|---|---|---|---|
| 创建时间 | CreationTime | birth time | 文件最初创建的时间 |
| 修改时间 | LastWriteTime | mtime | 文件内容最后一次修改的时间 |
| 访问时间 | LastAccessTime | atime | 文件最后一次被访问的时间 |
3. Python 综合修改示例
python
import os import time from datetime import datetime def modify_all_timestamps(filepath, datetime_str): """ 修改文件的所有时间戳 :param filepath: 文件路径 :param datetime_str: 日期时间字符串,如 '2024-12-25 15:30:00' """ # 解析日期时间 dt = datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S') timestamp = time.mktime(dt.timetuple()) try: # 修改访问时间和修改时间 os.utime(filepath, (timestamp, timestamp)) print(f"成功修改 {filepath} 的时间戳为 {datetime_str}") # 显示修改后的结果 stat_info = os.stat(filepath) print(f"修改时间: {datetime.fromtimestamp(stat_info.st_mtime)}") print(f"访问时间: {datetime.fromtimestamp(stat_info.st_atime)}") except Exception as e: print(f"修改失败: {e}") # 使用示例 modify_all_timestamps("document.pdf", "2024-12-25 15:30:00")4. 限制和注意事项
- 权限要求:需要对文件有写权限
- 系统限制:某些系统可能禁用了访问时间自动更新
- 文件占用:被其他程序占用的文件可能无法修改
- 只读文件:需要先移除只读属性
- 网络文件系统:NFS、SMB等可能有不同的行为
5. 验证修改结果
bash
# Linux 查看详细时间信息 stat filename.txt # Windows PowerShell 查看 Get-ChildItem filename.txt | Select-Object Name, LastWriteTime, CreationTime, LastAccessTime # Python 查看 import os from datetime import datetime stat_info = os.stat("filename.txt") print(f"修改时间: {datetime.fromtimestamp(stat_info.st_mtime)}")
更新时间:2025-12-13 17:15:24
