我的知识记录

如何修改文件属性时间 如何批量修改文件修改时间

如何修改文件属性时间

1. Windows 系统修改文件属性时间

PowerShell 方法:


 
powershell
# 修改最后修改时间 (Get-Item "filename.txt").LastWriteTime = "2024-06-15 14:30:00" # 修改创建时间 (Get-Item "filename.txt").CreationTime = "2024-06-15 14:30:00" # 修改最后访问时间 (Get-Item "filename.txt").LastAccessTime = "2024-06-15 14:30:00" # 同时修改所有三个时间属性 $file = Get-Item "filename.txt" $datetime = "2024-06-15 14:30:00" $file.LastWriteTime = $datetime $file.CreationTime = $datetime $file.LastAccessTime = $datetime

命令提示符方法:


 
cmd
# 使用 copy 命令更新修改时间(设为当前时间) copy /b filename.txt+,, >nul # 使用 PowerShell 命令(在 CMD 中执行) powershell "(Get-Item 'filename.txt').LastWriteTime = '2024-06-15 14:30:00'"

2. Linux/Unix/Mac 系统修改文件属性时间

使用 touch 命令:


 
bash
# 修改修改时间 (-m) 和访问时间 (-a) touch -m -d "2024-06-15 14:30:00" filename.txt touch -a -d "2024-06-15 14:30:00" filename.txt # 同时修改两个时间 touch -d "2024-06-15 14:30:00" filename.txt # 使用时间戳格式 touch -t 202406151430 filename.txt # 只修改访问时间 touch -a -d "2024-06-15 14:30:00" filename.txt # 只修改修改时间 touch -m -d "2024-06-15 14:30:00" filename.txt

查看文件时间属性:


 
bash
# 查看详细统计信息 stat filename.txt # 输出示例: # File: filename.txt # Size: 1024 Blocks: 8 IO Block: 4096 regular file # Device: 801h/2049d Inode: 1234567 Links: 1 # Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user) # Access: 2024-06-15 14:30:00.000000000 +0800 # Modify: 2024-06-15 14:30:00.000000000 +0800 # Change: 2024-06-15 14:30:00.000000000 +0800

如何批量修改文件修改时间

1. Windows 批量修改

PowerShell 批量修改:


 
powershell
# 修改当前目录下所有 PDF 文件的修改时间 Get-ChildItem *.pdf | ForEach-Object { $_.LastWriteTime = "2024-06-15 14:30:00" } # 修改多种文件类型的修改时间 Get-ChildItem *.pdf,*.docx,*.txt | ForEach-Object { $_.LastWriteTime = "2024-06-15 14:30:00" } # 根据文件名中的日期修改时间 Get-ChildItem *.pdf | ForEach-Object { # 假设文件名为 Report_2024-06-01.pdf if ($_.Name -match '(\d{4}-\d{2}-\d{2})') { $dateStr = $matches[1] $_.LastWriteTime = [DateTime]::Parse($dateStr) } } # 修改子目录中的所有文件 Get-ChildItem -Recurse *.pdf | ForEach-Object { $_.LastWriteTime = "2024-06-15 14:30:00" }

批处理脚本 (.bat):


 
batch
@echo off setlocal enabledelayedexpansion REM 设置目标日期时间 set "TARGET_TIME=2024-06-15 14:30:00" REM 批量修改所有 PDF 文件 for %%f in (*.pdf) do ( echo 修改文件: %%f powershell "(Get-Item '%%f').LastWriteTime = '%TARGET_TIME%'" ) REM 批量修改多种文件类型 for %%f in (*.pdf *.docx *.txt) do ( echo 修改文件: %%f powershell "(Get-Item '%%f').LastWriteTime = '%TARGET_TIME%'" ) echo 所有文件修改时间已完成! pause

2. Linux/Unix 批量修改

使用 shell 脚本:


 
bash
#!/bin/bash # 设置目标日期时间 TARGET_DATE="2024-06-15 14:30:00" # 修改所有 PDF 文件 for file in *.pdf; do if [ -f "$file" ]; then touch -m -d "$TARGET_DATE" "$file" echo "已修改: $file" fi done # 修改多种文件类型 for file in *.pdf *.docx *.txt; do if [ -f "$file" ]; then touch -m -d "$TARGET_DATE" "$file" echo "已修改: $file" fi done # 递归修改子目录中的所有文件 find . -type f -name "*.pdf" -exec touch -m -d "$TARGET_DATE" {} \; echo "批量修改完成!"

使用 find 命令:


 
bash
# 修改当前目录及子目录中所有 PDF 文件 find . -name "*.pdf" -exec touch -m -d "2024-06-15 14:30:00" {} \; # 修改最近7天内访问过的所有文件 find . -atime -7 -exec touch -m -d "2024-06-15 14:30:00" {} \; # 修改特定大小范围的文件 find . -size +1M -size -10M -exec touch -m -d "2024-06-15 14:30:00" {} \;

3. Python 批量修改脚本


 
python
import os import glob from datetime import datetime import time def batch_modify_file_times(patterns, target_datetime, recursive=False): """ 批量修改文件修改时间 :param patterns: 文件模式列表,如 ['*.pdf', '*.docx'] :param target_datetime: 目标日期时间字符串,如 '2024-06-15 14:30:00' :param recursive: 是否递归搜索子目录 """ # 解析目标时间 target_dt = datetime.strptime(target_datetime, '%Y-%m-%d %H:%M:%S') timestamp = time.mktime(target_dt.timetuple()) # 处理每个模式 for pattern in patterns: if recursive: # 递归搜索所有匹配文件 files = [] for root, dirs, filenames in os.walk('.'): for filename in filenames: if filename.endswith(pattern[1:] if pattern.startswith('*') else pattern): files.append(os.path.join(root, filename)) else: # 当前目录搜索 files = glob.glob(pattern) # 修改每个文件的时间 for file_path in files: try: if os.path.isfile(file_path): os.utime(file_path, (timestamp, timestamp)) print(f"✓ 已修改: {file_path}") except Exception as e: print(f"✗ 修改失败 {file_path}: {e}") # 使用示例 patterns = ['*.pdf', '*.docx', '*.txt'] batch_modify_file_times(patterns, '2024-06-15 14:30:00', recursive=True)

4. 高级批量修改功能

按文件创建规则修改时间:


 
python
import os import re from datetime import datetime def modify_time_by_filename_pattern(directory='.'): """ 根据文件名中的日期模式修改文件时间 例如:Report_2024-06-15.pdf -> 修改时间为 2024-06-15 """ date_pattern = re.compile(r'(\d{4})[-_](\d{2})[-_](\d{2})') for filename in os.listdir(directory): filepath = os.path.join(directory, filename) if os.path.isfile(filepath): match = date_pattern.search(filename) if match: try: year, month, day = match.groups() target_date = datetime(int(year), int(month), int(day)) timestamp = target_date.timestamp() os.utime(filepath, (timestamp, timestamp)) print(f"根据文件名修改 {filename} 时间为 {year}-{month}-{day}") except Exception as e: print(f"修改 {filename} 时间失败: {e}") # 执行按文件名修改 modify_time_by_filename_pattern()

注意事项:

  1. 权限检查:确保对目标文件有写权限
  2. 备份重要文件:批量操作前做好备份
  3. 测试小范围:先在少量文件上测试效果
  4. 时间格式:注意不同系统支持的时间格式差异
  5. 特殊文件:系统文件或正在使用的文件可能无法修改

如何修改文件属性时间 如何批量修改文件修改时间

标签:

更新时间:2025-12-13 17:15:38

上一篇:如何修改日期上传文件 文件保存时间可以修改不

下一篇:文档上传日期修改怎么弄 修改了文件的修改日期后还能用吗