Elimina por lotes archivos temporales de Windows (sistema, navegadores, caché, etc.) para todos los usuarios

Elimina por lotes archivos temporales de Windows (sistema, navegadores, caché, etc.) para todos los usuarios

¿Alguien en esta comunidad está utilizando una técnica particular para lograr la eliminación por lotes de datos temporales (como carpetas temporales de Windows, caché del navegador, etc.) para todos los usuarios?

La parte complicada parece ser:

  • Utilice una técnica/herramienta que se actualizará con el tiempo para adaptarse a los cambios en la estructura de carpetas de cada producto.
  • Permitir el acceso a las carpetas de otros usuarios (ejecutar como administrador/privilegios máximos)

Los scripts/archivos por lotes podrían ser una solución, pero requerirían un monitoreo constante para cada actualización del producto, para evitar la eliminación de archivos/estructuras de carpetas más antiguas...

¿Tus pensamientos?

Respuesta1

Tenía la misma pregunta, pero motivada por el deseo de ayudar en mis esfuerzos para finalizar las operaciones de limpieza de malware. Aquí está el script de comando que escribí con miras a la modularización para que pudiera extenderse fácilmente a futuros sistemas operativos y ubicaciones de archivos temporales (escribí esto antes de aprender PowerShell y no me he molestado en actualizarlo). Debido a que accede a todas las carpetas de perfil de los usuarios en la máquina, así como a las carpetas del sistema de Windows, el script debe ejecutarse con privilegios elevados.

@echo off
Rem Temp File Purging Tool v1.2.0
Rem Written by Twisty.  Created 1/19/2011.  Modified 6/28/2011.
Rem
Rem This script deletes temp files in locations where malware likes to write its initial
Rem files for infection and also where standard users have write permissions.
Rem
Rem This tool isn't likely to be as helpful to clean systems on which users run with 
Rem Admin permissions.  If you let your users run with Admin permissions you by extension
Rem give much of the malware on the Internet permission to do as it pleases on your workstations.

    

    Rem Identify version of Windows


    SET WinVer=Unknown

    VER | FINDSTR /IL "5.1." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=XP

    rem 5.2 is actually Server 2003, but for our purposes it's the same as XP
    VER | FINDSTR /IL "5.2." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=XP

    VER | FINDSTR /IL "6.0." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=VISTA

    rem 6.1 is actually Windows 7, but for our purposes it's the same as Vista
    VER | FINDSTR /IL "6.1." > NUL
    IF %ERRORLEVEL% EQU 0 SET WinVer=VISTA


    rem Ask user the version if we cannot automatically determine
    If Not "%WinVer%" EQU "Unknown" Goto :SetUserProfPath
    
    Set /P Response="Select OS  [X]P, [V]ista/7: "
    If /i "%Response%" EQU "X" Set WinVer=XP
    If /i "%Response%" EQU "V" Set WinVer=VISTA
    If "%WinVer%" EQU "" Echo Invalid response. Exiting.&goto :eof


:SetUserProfPath
    If %WinVer% EQU XP (
        Set UserProfileRootPath=C:\Documents and Settings
    ) Else (
        Set UserProfileRootPath=C:\Users
    )

    Call :RemoveSubfoldersAndFiles %SystemRoot%\Temp

    Rem Walk through each user profile folder
    Rem This convoluted command is necessary to ensure we process hidden and system folders too
    for /f "delims=" %%D in ('dir /ad /b "%UserProfileRootPath%"') DO Call :ProcessProfileFolder %UserProfileRootPath%\%%D

    Echo.
    Echo Finished! Press a key to exit...
    Pause>Nul

goto :EOF


:ProcessProfileFolder

    Set FolderName=%*

    Rem Leave if it's not a user profile folder
    If Not Exist "%FolderName%\ntuser.dat" goto :EOF

    Rem Leave it's a profile folder on the exclude list
    If /I "%FolderName%" EQU "%UserProfileRootPath%\Default" goto :EOF
    If /I "%FolderName%" EQU "%UserProfileRootPath%\Default User" goto :EOF
    If /I "%FolderName%" EQU "%UserProfileRootPath%\NetworkService" goto :EOF
    If /I "%FolderName%" EQU "%UserProfileRootPath%\LocalService" goto :EOF

    Set UserProfilePath=%FolderName%

    Rem Clean up these folders
    If %WinVer% EQU XP (
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\Local Settings\Temp
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\Local Settings\Temporary Internet Files
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\Application Data\Sun\Java\Deployment\cache

    ) Else (
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\Local\Temp
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\LocalLow\Temp
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\LocalLow\Sun\Java\Deployment\cache
        Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\Local\Microsoft\Windows\Temporary Internet Files
    )
    

goto :EOF


:RemoveSubfoldersAndFiles

    Set FolderRootPath=%*

    Rem Confirm target folder exists
    If Not Exist "%FolderRootPath%" Goto :EOF

    Rem Make the folder to clean current and confirm it exists...
    CD /D %FolderRootPath%

    Rem Confirm we switched directories
    If /I "%CD%" NEQ "%FolderRootPath%" Goto :EOF

    Rem ...so that this command cannot delete the folder, only everything in it
    Echo Purging %CD%
    RD /S /Q . >>nul 2>>&1

goto :EOF

Ampliando la funcionalidad del script

Parte de la extensibilidad del script se encuentra en el uso del :RemoveSubfoldersAndFilesprocedimiento. Para eliminar el contenido de una carpeta, simplemente llame a este procedimiento y pase una ruta de carpeta como único parámetro (sindoble comillas). La rutina manejará con gracia rutas que no existen, carpetas a las que no se puede acceder por algún motivo, o el caso en el que algunos archivos o carpetas debajo de la ruta estén en uso o se nieguen a ser eliminados.

Para limpiar carpetas adicionales encontradas en el perfil de cada usuario

En la sección Rem Clean up these foldersagregar llamadas adicionales al:Eliminar subcarpetas y archivossubrutina. Por ejemplo, para eliminar todo lo que hay en \AppData\Local\Microsoft\Windows\Temporary Internet Filesla carpeta de cada usuario, agregue la línea:

Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\Local\Microsoft\Windows\Temporary Internet Files

Tenga en cuenta el uso de la variable definida por script %UserProfilePath%en lugar de la variable típica %USERPROFILE%. La versión del script se actualiza dinámicamente a medida que el script recorre cada perfil de usuario en la máquina.

Para limpiar carpetas encontradas fuera de los perfiles de usuario

En la :SetUserProfPathsubrutina, agregue nuevamente llamadas al:Eliminar subcarpetas y archivosprocedimiento. Por ejemplo:

Call :RemoveSubfoldersAndFiles C:\Temp

información relacionada