diff --git a/README.md b/README.md index 9700a0e..2672192 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,48 @@ -# CLEAN_EVERYTHING +# 日志清理工具 +## 功能描述 +本工具用于自动清理指定目录及其子目录下的所有.log文件,并记录清理操作。 + +## 文件说明 +- `clean_logs.py`: 主脚本文件 +- `clean_logs.bat`: Windows批处理文件 +- `clean_logs_history.log`: 自动生成的清理记录日志 + +## 使用方法 + +### 1. 配置 +1. 使用文本编辑器打开`clean_logs.py` +2. 找到文件顶部的`TARGET_DIR`变量 +3. 将其值修改为实际要清理的目录路径,例如: + ```python + TARGET_DIR = "e:/path/to/your/logs" + ``` + +### 2. 运行方式 +- **Windows系统**: + 1. 双击`clean_logs.bat`文件 + 2. 脚本将自动执行,完成后会显示结果 + +- **其他系统**: + 1. 打开终端 + 2. 运行命令: + ```bash + python clean_logs.py + ``` + +## 运行效果 +1. 脚本将: + - 递归清理指定目录及其子目录下的所有.log文件 + - 在脚本所在目录生成`clean_logs_history.log`文件 + - 自动清理超过7天的日志记录 + +2. 每次运行后: + - 终端会显示删除的文件路径 + - 清理记录会追加到`clean_logs_history.log` + - 如果目录无效或Python未安装,会显示错误信息 + +## 注意事项 +1. 请确保Python已安装并添加到系统PATH +2. 清理操作不可逆,请谨慎使用 +3. 日志记录文件最多保留7天 +4. 如果目标目录包含重要.log文件,请先备份 diff --git a/clean_logs.bat b/clean_logs.bat new file mode 100644 index 0000000..8942d46 --- /dev/null +++ b/clean_logs.bat @@ -0,0 +1,18 @@ +@echo off +REM 自动查找Python解释器 +where python >nul 2>&1 +if %errorlevel% neq 0 ( + echo 未找到Python解释器,请确保Python已安装并添加到系统PATH + pause + exit /b 1 +) + +REM 执行日志清理脚本 +python "%~dp0clean_logs.py" + +REM 如果执行成功则暂停显示结果 +if %errorlevel% equ 0 ( + echo. + echo 日志清理完成! + pause +) diff --git a/clean_logs.py b/clean_logs.py new file mode 100644 index 0000000..42a8edd --- /dev/null +++ b/clean_logs.py @@ -0,0 +1,45 @@ +import os +import time +from datetime import datetime, timedelta + +# 用户可以在此处修改要清理的目录 +TARGET_DIR = "e:/path/to/your/logs" # 请将此路径修改为实际要清理的目录 + +def clean_log_files(directory): + # 获取脚本所在目录 + script_dir = os.path.dirname(os.path.abspath(__file__)) + # 创建日志文件路径 + log_file = os.path.join(script_dir, 'clean_logs_history.log') + + # 清理超过7天的日志记录 + if os.path.exists(log_file): + with open(log_file, 'r+') as f: + lines = f.readlines() + f.seek(0) + for line in lines: + log_time_str = line.split(' - ')[0] + log_time = datetime.strptime(log_time_str, '%Y-%m-%d %H:%M:%S') + if datetime.now() - log_time <= timedelta(days=7): + f.write(line) + f.truncate() + + # 遍历目录并删除.log文件 + for root, dirs, files in os.walk(directory): + for file in files: + if file.endswith('.log'): + file_path = os.path.join(root, file) + try: + os.remove(file_path) + # 记录删除操作 + with open(log_file, 'a') as f: + f.write(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - Deleted: {file_path}\n") + print(f"Deleted: {file_path}") + except Exception as e: + print(f"Error deleting {file_path}: {e}") + +if __name__ == "__main__": + if os.path.isdir(TARGET_DIR): + clean_log_files(TARGET_DIR) + print("清理完成") + else: + print(f"无效的目录路径: {TARGET_DIR}")