如何编写一键清理垃圾脚本

wen 实用脚本 1

本文目录导读:

如何编写一键清理垃圾脚本

  1. Windows 版本(批处理脚本)
  2. 增强版 Windows PowerShell 脚本
  3. Linux 版本(Bash脚本)
  4. 使用说明

我来为您编写一个安全、高效的一键清理垃圾脚本,这里提供Windows和Linux两个版本:

Windows 版本(批处理脚本)

@echo off
:: 一键清理垃圾脚本
:: 请以管理员身份运行
echo ========================================
echo    正在清理系统垃圾文件,请稍候...
echo ========================================
echo.
:: 关闭回显,提高执行效率
setlocal enabledelayedexpansion
:: 记录开始时间
set start=%time%
:: 清理Windows临时文件
echo [1/8] 正在清理临时文件夹...
del /f /s /q "%TEMP%\*.*" 2>nul
del /f /s /q "%WINDIR%\Temp\*.*" 2>nul
del /f /s /q "%WINDIR%\Prefetch\*.*" 2>nul
del /f /s /q "%WINDIR%\SoftwareDistribution\Download\*.*" 2>nul
:: 清理回收站
echo [2/8] 正在清空回收站...
rd /s /q C:\$Recycle.bin 2>nul
rd /s /q D:\$Recycle.bin 2>nul
rd /s /q E:\$Recycle.bin 2>nul
:: 清理浏览器缓存
echo [3/8] 正在清理浏览器缓存...
del /f /q "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\*.*" 2>nul
del /f /q "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Code Cache\*.*" 2>nul
del /f /q "%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache\*.*" 2>nul
del /f /q "%LOCALAPPDATA%\Microsoft\Windows\INetCache\*.*" 2>nul
:: 清理系统日志和更新缓存
echo [4/8] 正在清理系统日志...
del /f /s /q "%WINDIR%\Logs\*.*" 2>nul
del /f /s /q "%WINDIR%\Minidump\*.*" 2>nul
:: 清理缩略图缓存
echo [5/8] 正在清理缩略图缓存...
del /f /q "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db" 2>nul
del /f /q "%LOCALAPPDATA%\Microsoft\Windows\Explorer\iconcache_*.db" 2>nul
:: 清理崩溃转储文件
echo [6/8] 正在清理崩溃转储文件...
del /f /q "%LOCALAPPDATA%\CrashDumps\*.*" 2>nul
del /f /q "%WINDIR%\LiveKernelReports\*.dmp" 2>nul
:: 清理升级日志
echo [7/8] 正在清理系统升级日志...
del /f /q "%WINDIR%\WindowsUpdate.log" 2>nul
del /f /q "%WINDIR%\Panther\*.log" 2>nul
:: 清理DNS缓存
echo [8/8] 正在清理DNS缓存...
ipconfig /flushdns
echo.
echo ========================================
echo    清理完成!
echo ========================================
echo.
:: 显示清理结果
set end=%time%
echo 开始时间:%start%
echo 结束时间:%end%
echo.
:: 提示用户
echo 建议定期运行此脚本以保持系统整洁!
pause

增强版 Windows PowerShell 脚本

# 一键清理系统垃圾 PowerShell 脚本
# 以管理员权限运行
Write-Host "`n==========================================" -ForegroundColor Cyan
Write-Host "     系统垃圾一键清理工具 v2.0" -ForegroundColor Yellow
Write-Host "==========================================`n" -ForegroundColor Cyan
# 检查是否以管理员权限运行
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Host "请以管理员权限重新运行此脚本!" -ForegroundColor Red
    Start-Sleep 3
    exit
}
$totalSize = 0
$cleanedFiles = 0
# 清理临时文件夹的函数
function Clean-TempFolder {
    param([string]$path, [string]$description)
    if (Test-Path $path) {
        $size = (Get-ChildItem $path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB
        Remove-Item "$path\*" -Recurse -Force -ErrorAction SilentlyContinue
        Write-Host "$description : $([math]::Round($size, 2)) MB" -ForegroundColor Green
        return $size
    }
    return 0
}
# 执行清理
Write-Host "开始清理系统垃圾...`n" -ForegroundColor Yellow
# 清理各类临时文件
$paths = @(
    @("$env:TEMP", "临时文件"),
    @("$env:WINDIR\Temp", "Windows临时文件"),
    @("$env:WINDIR\Prefetch", "预读取文件"),
    @("$env:LOCALAPPDATA\CrashDumps", "崩溃转储"),
    @("$env:WINDIR\Minidump", "内存转储"),
    @("$env:LOCALAPPDATA\Microsoft\Windows\Explorer", "图标缓存")
)
foreach ($item in $paths) {
    $size = Clean-TempFolder $item[0] $item[1]
    $totalSize += $size
}
# 清理回收站
Write-Host "`n正在清理回收站..." -ForegroundColor Yellow
Clear-RecycleBin -Force -ErrorAction SilentlyContinue
Write-Host "回收站已清理" -ForegroundColor Green
# 清理系统更新缓存
Write-Host "`n正在清理系统更新缓存..." -ForegroundColor Yellow
Stop-Service wuauserv -Force -ErrorAction SilentlyContinue
$size = Clean-TempFolder "$env:WINDIR\SoftwareDistribution\Download" "Windows更新缓存"
Start-Service wuauserv -ErrorAction SilentlyContinue
$totalSize += $size
# 刷新DNS缓存
Write-Host "`n正在刷新DNS缓存..." -ForegroundColor Yellow
ipconfig /flushdns | Out-Null
Write-Host "DNS缓存已刷新" -ForegroundColor Green
# 显示清理结果
Write-Host "`n==========================================" -ForegroundColor Cyan
Write-Host "清理完成!" -ForegroundColor Green
Write-Host "总计清理空间:$([math]::Round($totalSize, 2)) MB" -ForegroundColor Yellow
Write-Host "==========================================" -ForegroundColor Cyan
# 记录日志
$logFile = "$env:TEMP\CleanupLog_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"
"清理时间: $(Get-Date)" | Out-File $logFile
"清理空间: $([math]::Round($totalSize, 2)) MB" | Out-File $logFile -Append
Write-Host "`n日志已保存到:$logFile" -ForegroundColor Green
Write-Host "`n按任意键退出..." -ForegroundColor Yellow
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Linux 版本(Bash脚本)

#!/bin/bash
# 一键清理Linux系统垃圾脚本
# 需要root权限运行
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
echo "=========================================="
echo "     Linux 一键清理脚本 v1.0"
echo "=========================================="
# 检查权限
if [[ $EUID -ne 0 ]]; then
   echo -e "${RED}请使用sudo运行此脚本!${NC}" 
   exit 1
fi
start_time=$(date +%s)
echo -e "${YELLOW}\n[1/6] 清理apt缓存...${NC}"
apt-get clean
apt-get autoclean
echo -e "${GREEN}apt缓存已清理${NC}"
echo -e "${YELLOW}\n[2/6] 清理临时文件...${NC}"
rm -rf /tmp/*
rm -rf /var/tmp/*
echo -e "${GREEN}临时文件已清理${NC}"
echo -e "${YELLOW}\n[3/6] 清理日志文件...${NC}"
find /var/log -type f -name "*.log" -delete
find /var/log -type f -name "*.gz" -delete
truncate -s 0 /var/log/syslog
echo -e "${GREEN}日志文件已清理${NC}"
echo -e "${YELLOW}\n[4/6] 清理包管理器缓存...${NC}"
if command -v pacman &> /dev/null; then
    pacman -Sc --noconfirm
elif command -v dnf &> /dev/null; then
    dnf clean all
elif command -v yum &> /dev/null; then
    yum clean all
fi
echo -e "${GREEN}包管理器缓存已清理${NC}"
echo -e "${YELLOW}\n[5/6] 清理孤儿依赖包...${NC}"
if command -v apt &> /dev/null; then
    apt-get autoremove --purge -y
fi
echo -e "${GREEN}孤儿依赖包已清理${NC}"
echo -e "${YELLOW}\n[6/6] 清理内存缓存...${NC}"
sync
echo 3 > /proc/sys/vm/drop_caches
echo -e "${GREEN}内存缓存已清理${NC}"
end_time=$(date +%s)
duration=$((end_time - start_time))
echo -e "\n=========================================="
echo -e "${GREEN}清理完成!${NC}"
echo -e "耗时:$duration 秒"
echo -e "建议定期运行此脚本以保持系统整洁!"
echo -e "=========================================="

使用说明

使用方法:

  1. Windows批处理:保存为 .bat 文件,右键“以管理员身份运行”
  2. PowerShell:保存为 .ps1 文件,以管理员权限在PowerShell中运行
  3. Linux脚本:保存为 .sh 文件,运行 chmod +x clean.sh && sudo ./clean.sh

注意事项:

  • 使用前请备份重要数据
  • 建议关闭占用临时文件的应用
  • 定期执行清理以保持系统性能
  • 首次运行时有疑问可先测试

这些脚本会自动处理各种系统垃圾,但对于特殊环境可能需要额外配置,如果遇到兼容性问题,可以根据需求调整清理项。

抱歉,评论功能暂时关闭!