脚本库\3_删除排除豁免列表.bat 编码: UTF-8
198 5,233 5.52 KB
返回
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ========================================
echo      删除排除豁免列表项 Date:2026-8-6
echo ========================================
echo.

REM ========== 检测PE环境 ==========
set "is_pe=0"
set "pe_drive="

if /i "%SystemDrive%"=="X:" set "is_pe=1"
if exist "%SystemDrive%\Windows\System32\winpeshl.exe" set "is_pe=1"

if "!is_pe!"=="1" (
    set "pe_drive=%SystemDrive:~0,1%"
    echo [PE环境] 检测到PE系统,PE系统盘符:!pe_drive!:(已排除)
    echo.
    echo 正在扫描本地Windows系统...
    echo.
    set "sysdrive="
    for %%d in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        if exist "%%d:\" (
            if /i not "%%d"=="!pe_drive!" (
                set "found_sys=0"
                if exist "%%d:\Windows\System32\explorer.exe" set "found_sys=1"
                if exist "%%d:\Windows\System32\kernel32.dll" set "found_sys=1"
                if exist "%%d:\Windows\System32\ntoskrnl.exe" set "found_sys=1"
                if exist "%%d:\Windows\System32\config\SYSTEM" set "found_sys=1"
                if exist "%%d:\Windows\WinSxS" set "found_sys=1"
                if exist "%%d:\Windows\Boot" set "found_sys=1"
                if "!found_sys!"=="1" (
                    echo   %%d: 盘  [Windows系统]
                    if "!sysdrive!"=="" set "sysdrive=%%d"
                )
            )
        )
    )
    if "!sysdrive!"=="" (
        echo [错误] 未检测到任何Windows系统!请确认硬盘连接或系统是否存在。
        pause
        exit /b
    )
    echo.
    echo 默认目标系统盘:!sysdrive!:
    echo.
) else (
    set "sysdrive=%SystemDrive:~0,1%"
    echo 系统所在盘符:!sysdrive!:
    echo.
    echo 检测本机所有驱动器:
    for %%d in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        if exist "%%d:\" (
            echo   %%d: 盘
        )
    )
    echo.
)

REM ========== 选择盘符 ==========
:input_drive
set "drive=!sysdrive!"
set /p drive=请输入要清理的驱动器盘符(默认 !sysdrive!:,直接回车确认): 

if not defined drive set "drive=!sysdrive!"
set "drive=%drive::=%"

if "!drive!"=="" (
    echo 错误:盘符不能为空!
    goto input_drive
)

if not exist "!drive!:\" (
    echo 错误:驱动器 !drive!: 不存在!
    goto input_drive
)

echo.
echo 已选择驱动器:!drive!:
echo.
echo 开始删除...
echo.

%drive%:
cd \

for %%d in (
    "$Recycle.Bin"
    "$Windows.~BT"
    "$Windows.~WS"
    "$Windows.~LS"
    "Recycler"
    "Recycled"
    "PerfLogs"
    "System Volume Information"
) do (
    if exist "%%~d" (
        echo 正在删除: %%~d
        attrib -s -h -r "%%~d" >nul 2>&1
        rd /s /q "%%~d" 2>nul
    )
)

for %%f in (
    "swapfile.sys"
    "hiberfil.sys"
    "pagefile.sys"
    "winpepge.sys"
) do (
    if exist "%%~f" (
        echo 正在删除: %%~f
        attrib -s -h -r "%%~f" >nul 2>&1
        del /f /q "%%~f" 2>nul
    )
)

for %%d in (
    "Windows\Temp"
    "Windows\Logs"
    "Windows\Prefetch"
    "Windows\CSC"
    "Windows\CbsTemp"
    "Windows\WinSxS\ManifestCache"
    "Windows\SoftwareDistribution"
) do (
    if exist "%%~d" (
        echo 正在删除: %%~d
        rd /s /q "%%~d" 2>nul
    )
)

for %%d in (
    "Program Files\WindowsApps\Deleted"
    "Program Files\WindowsApps\DeletedAllUserPackages"
) do (
    if exist "%%~d" (
        echo 正在删除: %%~d
        rd /s /q "%%~d" 2>nul
    )
)

for %%d in (
    "ProgramData\Microsoft\Windows\WER"
    "ProgramData\Microsoft\Windows\Caches"
    "ProgramData\Microsoft\Windows Defender\Scans\History\Results"
    "ProgramData\Microsoft\Windows Defender\Scans\History\Service\DetectionHistory"
) do (
    if exist "%%~d" (
        echo 正在删除: %%~d
        rd /s /q "%%~d" 2>nul
    )
)

for /d %%u in ("Users\*") do (
    if exist "%%~u\AppData\Local\Temp" (
        echo 正在删除: %%~u\AppData\Local\Temp
        rd /s /q "%%~u\AppData\Local\Temp" 2>nul
    )
    
    if exist "%%~u\AppData\Local\Microsoft\Windows\Explorer" (
        echo 正在删除: %%~u\AppData\Local\Microsoft\Windows\Explorer
        rd /s /q "%%~u\AppData\Local\Microsoft\Windows\Explorer" 2>nul
    )
    
    if exist "%%~u\AppData\Local\Microsoft\Windows\INetCache" (
        echo 正在删除: %%~u\AppData\Local\Microsoft\Windows\INetCache
        rd /s /q "%%~u\AppData\Local\Microsoft\Windows\INetCache" 2>nul
    )
    
    if exist "%%~u\AppData\Local\lxss" (
        echo 正在删除: %%~u\AppData\Local\lxss
        rd /s /q "%%~u\AppData\Local\lxss" 2>nul
    )
    
    if exist "%%~u\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs" (
        echo 正在删除: %%~u\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
        rd /s /q "%%~u\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs" 2>nul
    )
    
    if exist "%%~u\OneDrive" (
        echo 正在删除: %%~u\OneDrive
        rd /s /q "%%~u\OneDrive" 2>nul
    )
    
    if exist "%%~u\OneDrive - business" (
        echo 正在删除: %%~u\OneDrive - business
        rd /s /q "%%~u\OneDrive - business" 2>nul
    )
)

echo.
echo ========================================
echo 删除操作完成!
echo ========================================
timeout /t 3 /nobreak >nul
exit /b 0