|
|
发表于 2026-3-10 10:33:47
|
显示全部楼层
本帖最后由 zhuzhim 于 2026-3-10 10:37 编辑
我有一个批处理文件,是删除系统临时文件的。要以管理员运行。但是右键以管理员运行时仍然提示需要以管理员运行,导致无法运行,楼主以前的系统也是这样。在官方系统中运行正常。不知为何。以下时批处理源码(我也是在论坛上下载的 )@echo off
:: 不改变编码,使用系统默认编码,确保bat文件以ANSI格式保存
setlocal enabledelayedexpansion
color 0a
cls
title 系统垃圾清理工具 v3.6
echo.
echo ================================================
echo 系统垃圾清理工具 v3.6
echo ================================================
echo.
:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
echo 警告: 此程序需要管理员权限才能完全清理所有垃圾文件!
echo.
echo 正在尝试以管理员权限重新运行...
echo 请在UAC提示中点击"是"
echo.
pause
powershell -Command "Start-Process cmd -ArgumentList '/c \"%~0\"' -Verb RunAs" 2>nul
exit
)
cls
echo.
echo ================================================
echo 系统垃圾清理工具 v3.6
echo ================================================
echo.
echo 管理员权限验证成功!
:: 获取清理前的磁盘可用空间
echo 正在分析磁盘空间...
for /f "tokens=2" %%a in ('powershell -Command "(Get-PSDrive C).Free/1MB"') do set "space_before=%%a"
set space_before=%space_before:.=%
echo.
timeout /t 1 /nobreak >nul
echo.
echo 即将开始安全清理,请稍等...
echo 注意:清理过程中请勿关闭此窗口
echo.
timeout /t 2 /nobreak >nul
:: 主清理流程
call :clean_temp_files
call :clean_prefetch_files
call :empty_recycle_bin
call :clean_browser_cache
call :clean_windows_update_cache
call :clean_windows_backup
call :clean_log_files
call :clean_defender_files
call :clean_iis_logs
call :clean_system_junk
call :clean_software_cache
call :clean_windows_cache
call :clean_user_cache
call :clean_network_cache
call :clean_registry
call :clean_icon_cache_safe
call :final_cleanup
echo.
echo ================================================
echo 清理完成!
echo ================================================
echo 所有清理操作已完成,系统垃圾已安全清除。
echo (清理后可能需要重启才能看到完整效果)
echo 按任意键关闭窗口,by无忧论坛肉仔!
echo.
pause >nul
exit
:: 清理临时文件
:clean_temp_files
echo [1/16] 正在清理临时文件...
timeout /t 1 /nobreak >nul
echo ├── 清理系统临时文件和缓存...
:: Internet临时文件
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\INetCache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\INetCookies\*" >nul 2>&1
:: 缩略图缓存
del /f /q "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_*.db" >nul 2>&1
:: 临时文件夹
del /f /s /q "%TEMP%\*" >nul 2>&1
for /d %%a in ("%TEMP%\*") do rd /s /q "%%a" >nul 2>&1
:: 历史记录
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\History\*" >nul 2>&1
:: 下载的程序文件
del /f /s /q "%windir%\Downloaded Program Files\*" >nul 2>&1
:: 脱机网页
del /f /s /q "%windir%\Offline Web Pages\*" >nul 2>&1
echo ├── 清理Windows临时文件夹...
if exist "%windir%\Temp" (
del /f /s /q "%windir%\Temp\*" >nul 2>&1
for /d %%a in ("%windir%\Temp\*") do rd /s /q "%%a" >nul 2>&1
)
echo ├── 清理用户临时文件夹...
if exist "%userprofile%\AppData\Local\Temp" (
del /f /s /q "%userprofile%\AppData\Local\Temp\*" >nul 2>&1
for /d %%f in ("%userprofile%\AppData\Local\Temp\*") do rd /s /q "%%f" >nul 2>&1
)
echo ├── 清理系统错误报告...
del /f /s /q "%ALLUSERSPROFILE%\Microsoft\Windows\WER\*" >nul 2>&1
echo ├── 清理内存转储文件(仅限特定目录)...
:: 只清理Windows目录下的转储文件,避免误删数据库备份
del /f /q "%windir%\MEMORY.DMP" >nul 2>&1
del /f /q "%windir%\Minidump\*.dmp" >nul 2>&1
:: 清理更多cleanmgr会清理的内容
echo ├── 清理系统错误内存转储文件...
del /f /q "%SystemRoot%\MEMORY.DMP" >nul 2>&1
echo ├── 清理调试转储文件...
del /f /s /q "%SystemRoot%\Minidump\*" >nul 2>&1
echo ├── 清理临时安装文件...
del /f /s /q "%windir%\msdownld.tmp\*" >nul 2>&1
echo └── ? 临时文件清理完成
echo.
exit /b
:clean_prefetch_files
echo [2/16] 正在清理预取文件...
timeout /t 1 /nobreak >nul
if exist "%windir%\Prefetch" (
del /f /s /q "%windir%\Prefetch\*.*" >nul 2>&1
echo └── ? 预取文件清理完成
) else (
echo └── ? 预取文件夹不存在或已清空
)
echo.
exit /b
:empty_recycle_bin
echo [3/16] 正在清空回收站...
timeout /t 1 /nobreak >nul
powershell -Command "Clear-RecycleBin -Force -ErrorAction SilentlyContinue" >nul 2>&1
echo └── ? 回收站清理完成
echo.
exit /b
:clean_browser_cache
echo [4/16] 正在清理浏览器缓存...
timeout /t 1 /nobreak >nul
echo ├── 清理Chrome浏览器缓存...
del /f /s /q "%userprofile%\AppData\Local\Google\Chrome\User Data\Default\Cache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Google\Chrome\User Data\Default\GPUCache\*" >nul 2>&1
echo ├── 清理Edge浏览器缓存...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Edge\User Data\Default\Cache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Edge\User Data\Default\GPUCache\*" >nul 2>&1
echo ├── 清理Firefox浏览器缓存...
del /f /s /q "%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\*.default\cache2\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Mozilla\Firefox\Profiles\*.default-release\cache2\*" >nul 2>&1
echo ├── 清理通用浏览器缓存目录...
for /d %%a in ("%userprofile%\AppData\Local\*") do (
if exist "%%a\User Data\Default\Cache" (
del /f /s /q "%%a\User Data\Default\Cache\*" >nul 2>&1
)
if exist "%%a\User Data\Default\GPUCache" (
del /f /s /q "%%a\User Data\Default\GPUCache\*" >nul 2>&1
)
)
echo ├── 清理IE浏览器缓存...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\INetCache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" >nul 2>&1
echo └── ? 浏览器缓存清理完成
echo.
exit /b
:clean_windows_update_cache
echo [5/16] 正在清理Windows更新缓存...
timeout /t 1 /nobreak >nul
:: 检查Windows更新服务的原始状态
echo ├── 检查Windows更新服务状态...
sc query wuauserv | find "STATE" | find "RUNNING" >nul
if %errorlevel%==0 (
set "wu_was_running=1"
echo ├── 检测到更新服务正在运行,清理后将恢复运行状态
) else (
set "wu_was_running=0"
echo ├── 检测到更新服务已停止,清理后将保持停止状态
)
:: 检查其他服务状态
sc query bits | find "STATE" | find "RUNNING" >nul
if %errorlevel%==0 (set "bits_was_running=1") else (set "bits_was_running=0")
sc query cryptSvc | find "STATE" | find "RUNNING" >nul
if %errorlevel%==0 (set "crypt_was_running=1") else (set "crypt_was_running=0")
sc query msiserver | find "STATE" | find "RUNNING" >nul
if %errorlevel%==0 (set "msi_was_running=1") else (set "msi_was_running=0")
echo ├── 临时停止相关服务...
net stop wuauserv >nul 2>&1
net stop cryptSvc >nul 2>&1
net stop bits >nul 2>&1
net stop msiserver >nul 2>&1
echo ├── 清理更新下载缓存...
if exist "%windir%\SoftwareDistribution\Download" (
rd /s /q "%windir%\SoftwareDistribution\Download" >nul 2>&1
md "%windir%\SoftwareDistribution\Download" >nul 2>&1
)
echo ├── 清理传递优化缓存...
del /f /s /q "%windir%\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Windows\DeliveryOptimization\Cache\*" >nul 2>&1
echo ├── 清理Windows更新日志...
del /f /q "%windir%\WindowsUpdate.log" >nul 2>&1
echo ├── 根据原始状态恢复服务...
:: 恢复服务到原始状态
if %msi_was_running%==1 net start msiserver >nul 2>&1
if %bits_was_running%==1 net start bits >nul 2>&1
if %crypt_was_running%==1 net start cryptSvc >nul 2>&1
if %wu_was_running%==1 (
net start wuauserv >nul 2>&1
echo ├── 已恢复Windows更新服务到运行状态
) else (
echo ├── 保持Windows更新服务为停止状态
)
echo ├── 清理组件存储(深度清理)...
dism.exe /online /cleanup-image /startcomponentcleanup /resetbase >nul 2>&1
echo └── ? Windows更新缓存清理完成
echo.
exit /b
:clean_windows_backup
echo [6/16] 正在清理Windows备份文件...
timeout /t 1 /nobreak >nul
if exist "C:\Windows.old" (
echo ├── 清理Windows.old文件夹...
takeown /f "C:\Windows.old" /r /d y >nul 2>&1
icacls "C:\Windows.old" /grant administrators:F /t >nul 2>&1
rmdir /s /q "C:\Windows.old" >nul 2>&1
echo ├── ? Windows.old文件夹已清理
) else (
echo ├── ? Windows.old文件夹不存在
)
echo ├── 保留最新系统还原点,清理旧还原点...
:: 只保留最新的还原点
wmic shadowcopy where "ID!=''" call create >nul 2>&1
vssadmin delete shadows /for=C: /oldest /quiet >nul 2>&1
echo ├── 清理Windows Installer缓存...
del /f /s /q "%windir%\Installer\$PatchCache$\*" >nul 2>&1
echo ├── 清理系统更新卸载备份(释放大量空间)...
echo │ 警告:删除后将无法卸载已安装的系统更新!
set "pathLCU=%windir%\servicing\LCU"
if exist "%pathLCU%" (
echo │ 获取文件夹权限...
takeown /f "%pathLCU%" /r /d y >nul 2>&1
icacls "%pathLCU%" /grant administrators:F /t /c >nul 2>&1
echo │ 清理更新备份文件...
rd /s /q "%pathLCU%" >nul 2>&1
md "%pathLCU%" >nul 2>&1
echo │ ? 已清理更新卸载备份
) else (
echo │ ? 更新卸载备份不存在
)
echo ├── 清理过时的服务包备份...
dism.exe /online /cleanup-image /spsuperseded /hidesp >nul 2>&1
echo ├── 清理过期的驱动包...
pnputil /d >nul 2>&1
echo └── ? Windows备份文件清理完成
echo.
exit /b
:clean_log_files
echo [7/16] 正在清理系统日志文件...
timeout /t 1 /nobreak >nul
echo ├── 清理Windows事件日志...
wevtutil cl Application >nul 2>&1
wevtutil cl System >nul 2>&1
wevtutil cl Security >nul 2>&1
wevtutil cl Setup >nul 2>&1
echo ├── 清理CBS日志...
del /f /s /q "%windir%\Logs\CBS\*" >nul 2>&1
echo ├── 清理DISM日志...
del /f /s /q "%windir%\Logs\DISM\*" >nul 2>&1
echo ├── 清理Windows日志目录(仅限系统目录)...
:: 只清理Windows目录下的日志,避免误删重要应用日志
del /f /s /q "%windir%\Logs\*.log" >nul 2>&1
del /f /s /q "%windir%\Logs\*.txt" >nul 2>&1
echo ├── 清理性能监视器日志...
del /f /s /q "%windir%\System32\LogFiles\*" >nul 2>&1
echo ├── 清理安装日志...
del /f /s /q "%windir%\*.log" >nul 2>&1
del /f /s /q "%windir%\inf\*.log" >nul 2>&1
echo └── ? 系统日志文件清理完成
echo.
exit /b
:clean_defender_files
echo [8/16] 正在清理Windows Defender文件...
timeout /t 1 /nobreak >nul
echo ├── 清理Defender缓存...
del /f /s /q "%ProgramData%\Microsoft\Windows Defender\Scans\History\*" >nul 2>&1
del /f /s /q "%ProgramData%\Microsoft\Windows Defender\Quarantine\*" >nul 2>&1
echo └── ? Windows Defender文件清理完成
echo.
exit /b
:clean_iis_logs
echo [9/16] 正在清理IIS日志...
timeout /t 1 /nobreak >nul
if exist "%systemdrive%\inetpub\logs" (
del /f /s /q "%systemdrive%\inetpub\logs\*" >nul 2>&1
echo └── ? IIS日志清理完成
) else (
echo └── ? IIS未安装或日志不存在
)
echo.
exit /b
:clean_system_junk
echo [10/16] 正在清理系统垃圾文件...
timeout /t 1 /nobreak >nul
:: 根据大佬建议,只清理特定安全目录下的垃圾文件,避免误删数据库文件
echo ├── 清理Windows目录下的临时文件...
del /f /s /q "%windir%\*.tmp" >nul 2>&1
del /f /s /q "%windir%\*.bak" >nul 2>&1
del /f /s /q "%windir%\*.old" >nul 2>&1
echo ├── 清理用户目录下的临时文件...
del /f /s /q "%userprofile%\*.tmp" >nul 2>&1
del /f /s /q "%userprofile%\*.bak" >nul 2>&1
echo ├── 清理下载目录中的部分垃圾文件...
del /f /q "%userprofile%\Downloads\*.tmp" >nul 2>&1
echo ├── 清理桌面的临时文件...
del /f /q "%userprofile%\Desktop\*.tmp" >nul 2>&1
echo ├── 清理系统隐藏的临时文件...
del /f /q "%systemdrive%\*.tmp" >nul 2>&1
del /f /q "%systemdrive%\*._mp" >nul 2>&1
echo └── ? 系统垃圾文件清理完成(已优化,避免误删重要文件)
echo.
exit /b
:clean_software_cache
echo [11/16] 正在清理软件缓存...
timeout /t 1 /nobreak >nul
echo ├── 清理WPS Office缓存...
del /f /s /q "%userprofile%\AppData\Roaming\kingsoft\wps\cache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Kingsoft\WPS Office\cache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Roaming\Kingsoft\office6\cache\*" >nul 2>&1
echo ├── 清理腾讯QQ缓存(不清理接收文件)...
:: 不清理FileRecv文件夹,那是用户接收的文件!
del /f /s /q "%userprofile%\AppData\Roaming\Tencent\QQ\Temp\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Tencent\QQ\Cache\*" >nul 2>&1
echo ├── 清理微信缓存(不清理聊天文件)...
:: 只清理Cache文件夹,不清理FileStorage
del /f /s /q "%userprofile%\AppData\Roaming\Tencent\WeChat\Cache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Roaming\Tencent\WeChat\Temp\*" >nul 2>&1
echo ├── 清理迅雷缓存...
del /f /s /q "%userprofile%\AppData\Roaming\Thunder Network\Thunder\Profiles\*\Cache\*" >nul 2>&1
echo ├── 清理Adobe缓存...
del /f /s /q "%userprofile%\AppData\Roaming\Adobe\Common\Media Cache Files\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Adobe\Common\Media Cache Files\*" >nul 2>&1
echo ├── 清理Office缓存...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Office\16.0\OfficeFileCache\*" >nul 2>&1
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Office\15.0\OfficeFileCache\*" >nul 2>&1
echo ├── 清理Steam缓存...
del /f /s /q "%ProgramFiles(x86)%\Steam\logs\*" >nul 2>&1
del /f /s /q "%ProgramFiles%\Steam\logs\*" >nul 2>&1
echo ├── 清理Java缓存...
del /f /s /q "%userprofile%\AppData\LocalLow\Sun\Java\Deployment\cache\*" >nul 2>&1
echo ├── 清理Visual Studio缓存...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\VisualStudio\*\ComponentModelCache\*" >nul 2>&1
echo └── ? 软件缓存清理完成
echo.
exit /b
:clean_windows_cache
echo [12/16] 正在清理Windows系统缓存...
timeout /t 1 /nobreak >nul
echo ├── 清理字体缓存...
del /f /q "%windir%\ServiceProfiles\LocalService\AppData\Local\FontCache\*" >nul 2>&1
del /f /q "%windir%\System32\FNTCACHE.DAT" >nul 2>&1
echo ├── 清理Media Player缓存...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Media Player\*" >nul 2>&1
echo ├── 清理Windows搜索历史(不清理索引)...
:: 不清理搜索索引,只清理历史记录
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\ConnectedSearch\History\*" >nul 2>&1
echo ├── 清理Game Bar缓存...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\GameDVR\*" >nul 2>&1
echo ├── 清理OneDrive缓存...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\OneDrive\logs\*" >nul 2>&1
echo ├── 清理Windows缓存文件...
del /f /s /q "%windir%\cache\*" >nul 2>&1
echo └── ? Windows系统缓存清理完成
echo.
exit /b
:clean_user_cache
echo [13/16] 正在清理用户缓存...
timeout /t 1 /nobreak >nul
echo ├── 清理最近使用文件列表(保留快速访问固定项)...
:: 只清理Recent文件夹中的快捷方式,不清理跳转列表
for %%f in ("%userprofile%\AppData\Roaming\Microsoft\Windows\Recent\*.lnk") do (
del /f /q "%%f" >nul 2>&1
)
:: 不再清理AutomaticDestinations和CustomDestinations
:: 这些包含快速访问固定项和任务栏跳转列表
echo ├── 跳过跳转列表缓存(保护快速访问固定项)...
echo ├── 清理用户临时Internet文件...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\INetCookies\*" >nul 2>&1
echo ├── 清理用户错误报告...
del /f /s /q "%userprofile%\AppData\Local\Microsoft\Windows\WER\*" >nul 2>&1
echo ├── 清理用户活动历史记录...
del /f /s /q "%userprofile%\AppData\Local\ConnectedDevicesPlatform\*" >nul 2>&1
echo └── ? 用户缓存清理完成(保留快速访问设置)
echo.
exit /b
:clean_network_cache
echo [14/16] 正在清理网络缓存...
timeout /t 1 /nobreak >nul
echo ├── 刷新DNS缓存...
ipconfig /flushdns >nul 2>&1
echo ├── 清理网络列表缓存...
del /f /q "%userprofile%\AppData\Roaming\Microsoft\Network\Connections\*" >nul 2>&1
echo ├── 清理ARP缓存...
arp -d * >nul 2>&1
:: 移除Winsock重置,避免需要重启
:: echo ├── 重置Winsock目录...
:: netsh winsock reset >nul 2>&1
echo ├── 跳过Winsock重置(避免需要重启)...
echo └── ? 网络缓存清理完成
echo.
exit /b
:clean_registry
echo [15/16] 正在清理注册表...
timeout /t 1 /nobreak >nul
:: 不清理托盘图标缓存,避免任务栏图标被隐藏
:: echo ├── 清理托盘图标缓存注册表项...
:: reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams /f >nul 2>&1
:: reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream /f >nul 2>&1
echo ├── 清理MUI缓存...
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cpls" /f >nul 2>&1
:: 不清理文件关联,避免丢失用户设置
:: echo ├── 清理文件关联缓存...
:: reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts" /f >nul 2>&1
echo └── ? 注册表清理完成(保留用户设置)
echo.
exit /b
:clean_icon_cache_safe
echo [16/16] 正在清理图标缓存...
echo.
echo ================================================
echo 即将清理图标缓存
echo ================================================
echo 注意:此步骤需要重启资源管理器
echo 屏幕可能会短暂黑屏,这是正常现象
echo ================================================
timeout /t 3 /nobreak >nul
echo 正在清理图标和缩略图缓存...
echo ├── 准备关闭资源管理器...
taskkill /f /im explorer.exe >nul 2>&1
timeout /t 2 /nobreak >nul
echo ├── 清理图标缓存文件...
set "icon_cache=%userprofile%\AppData\Local\IconCache.db"
set "thumb_dir=%userprofile%\AppData\Local\Microsoft\Windows\Explorer"
if exist "%icon_cache%" (
del /f /q "%icon_cache%" >nul 2>&1
)
echo ├── 清理缩略图缓存文件...
del /f /q "%thumb_dir%\iconcache_*.db" >nul 2>&1
del /f /q "%thumb_dir%\thumbcache_*.db" >nul 2>&1
echo ├── 重新启动资源管理器...
start explorer.exe >nul 2>&1
timeout /t 5 /nobreak >nul
echo └── ? 图标缓存清理完成(保留任务栏设置)
echo.
exit /b
:final_cleanup
echo 正在进行最终优化...
timeout /t 1 /nobreak >nul
echo ├── 刷新系统图标缓存...
ie4uinit.exe -show >nul 2>&1
echo ├── 清理系统内存工作集...
echo 正在优化内存使用...
powershell -Command "Get-Process | ForEach-Object { try { $_.MinWorkingSet = 100KB } catch {} }" >nul 2>&1
echo ├── 刷新DNS解析器缓存...
ipconfig /registerdns >nul 2>&1
echo ├── 等待系统稳定...
timeout /t 2 /nobreak >nul
echo └── ? 最终优化完成
exit /b
|
|