本文目录导读:

我可以为您提供几种常用的删除过期文件的脚本方案,涵盖 Windows 和 Linux 环境。
Windows 环境脚本
使用 PowerShell 脚本
# 删除指定目录下30天前的文件
$daysOld = 30
$targetPath = "C:\Temp\"
# 获取并删除过期文件
Get-ChildItem -Path $targetPath -Recurse -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$daysOld) } |
Remove-Item -Force -Verbose
Write-Host "已删除 $daysOld 天前的文件"
使用批处理脚本 (cmd)
@echo off setlocal enabledelayedexpansion set "target_dir=C:\Temp" set "days_old=30" echo 正在删除 %target_dir% 中 %days_old% 天前的文件... forfiles -p "%target_dir%" -d -%days_old% -c "cmd /c del /q @path" echo 完成! pause
Linux 环境脚本
使用 find 命令
#!/bin/bash # 配置参数 TARGET_DIR="/tmp" DAYS_OLD=7 LOG_FILE="/var/log/cleanup.log" # 删除过期文件 find "$TARGET_DIR" -type f -mtime +$DAYS_OLD -delete 2>> "$LOG_FILE" # 输出结果 echo "$(date): 已删除 $TARGET_DIR 中 $DAYS_OLD 天前的文件" >> "$LOG_FILE"
更安全的版本(先检查再删除)
#!/bin/bash
TARGET_DIR="/var/log"
DAYS_OLD=30
DRY_RUN=true # 设为 false 执行实际删除
echo "检查要删除的文件($DAYS_OLD 天前):"
find "$TARGET_DIR" -type f -mtime +$DAYS_OLD -print
if [ "$DRY_RUN" = false ]; then
find "$TARGET_DIR" -type f -mtime +$DAYS_OLD -delete
echo "已执行删除操作"
else
echo "这是预览模式,未执行删除"
fi
高级功能脚本
支持多种条件的删除脚本
#!/usr/bin/env python3
# 跨平台版本
import os
import time
import argparse
from datetime import datetime, timedelta
def delete_old_files(path, days, extensions=None, dry_run=True):
"""删除指定目录下的过期文件"""
now = time.time()
cutoff = now - (days * 86400) # 天数转换为秒
deleted_count = 0
deleted_size = 0
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
# 检查文件扩展名
if extensions and not any(file.endswith(ext) for ext in extensions):
continue
try:
stat = os.stat(file_path)
file_time = stat.st_mtime # 或 stat.st_ctime
if file_time < cutoff:
file_size = stat.st_size
if dry_run:
print(f"[预览] 将删除: {file_path} ({file_size/1024:.1f} KB)")
else:
os.remove(file_path)
print(f"[已删除] {file_path}")
deleted_count += 1
deleted_size += file_size
except OSError as e:
print(f"错误: {file_path} - {e}")
print(f"\n总计: 删除 {deleted_count} 个文件, {deleted_size/1024/1024:.2f} MB")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="删除过期文件")
parser.add_argument("path", help="目标目录")
parser.add_argument("--days", type=int, default=30, help="文件保留天数")
parser.add_argument("--ext", nargs="+", help="文件扩展名过滤器 (如 .log .txt)")
parser.add_argument("--execute", action="store_true", help="实际执行删除")
args = parser.parse_args()
delete_old_files(args.path, args.days, args.ext, not args.execute)
使用建议
- 先在测试环境运行:使用
-whatif(PowerShell) 或-print(Linux) 参数预览 - 设置日志记录:记录删除操作便于审计
- 权限检查:确保脚本有足够权限
- 设置定时任务:
- Windows: 任务计划程序
- Linux: crontab
定时执行示例
Linux crontab(每天凌晨2点执行)
0 2 * * * /path/to/cleanup.sh
Windows 任务计划程序
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\cleanup.ps1" $trigger = New-ScheduledTaskTrigger -Daily -At 2am Register-ScheduledTask -TaskName "FileCleanup" -Action $action -Trigger $trigger
选择适合您环境的方案,记得先在非生产环境测试!
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播