Exclua em lote arquivos temporários do Windows (sistema, navegadores, cache, etc.) para todos os usuários

Exclua em lote arquivos temporários do Windows (sistema, navegadores, cache, etc.) para todos os usuários

Alguém nesta comunidade está usando uma técnica específica para obter a exclusão em lote de dados temporários (como pastas temporárias do Windows, cache do navegador, etc.) para todos os usuários?

A parte complicada parece ser:

  • Use uma técnica/ferramenta que será atualizada ao longo do tempo para atender às mudanças na estrutura de pastas de cada produto
  • Permitir acesso às pastas de outros usuários (executar como administrador/privilégios máximos)

Scripts/arquivos em lote poderiam ser uma solução, mas exigiriam monitoramento constante para cada atualização do produto, para evitar a exclusão de arquivos/estruturas de pastas mais antigos...

Seus pensamentos?

Responder1

Eu tive a mesma pergunta, mas motivado pelo desejo de ajudar em meus esforços para finalizar as operações de limpeza de malware. Aqui está o script de comando que escrevi pensando na modularização para que pudesse ser estendido facilmente para futuros sistemas operacionais e locais de arquivos temporários (escrevi isso antes de aprender o PowerShell e não me preocupei em atualizá-lo). Como ele acessa todas as pastas de perfil de usuários na máquina, bem como as pastas do sistema Windows, o script deve ser executado com privilégios 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

Estendendo a funcionalidade do script

Parte da extensibilidade do script é encontrada no uso do :RemoveSubfoldersAndFilesprocedimento. Para deletar o conteúdo de uma pasta, basta chamar este procedimento e passar um caminho de pasta como único parâmetro (semaspas duplas). A rotina lidará normalmente com caminhos que não existem, pastas que não podem ser acessadas por qualquer motivo ou no caso em que alguns arquivos ou pastas abaixo do caminho estão em uso ou se recusam a ser excluídos.

Para limpar pastas adicionais encontradas no perfil de cada usuário

Na seção Rem Clean up these foldersadicione chamadas adicionais ao:Remover subpastas e arquivossub-rotina. Por exemplo, para excluir tudo na pasta de cada usuário, \AppData\Local\Microsoft\Windows\Temporary Internet Filesadicione a linha:

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

Observe o uso da %UserProfilePath%variável definida pelo script em vez da %USERPROFILE%variável típica. A versão do script é atualizada dinamicamente à medida que o script percorre cada perfil de usuário na máquina.

Para limpar pastas encontradas fora dos perfis de usuário

Na :SetUserProfPathsub-rotina, adicione novamente chamadas ao:Remover subpastas e arquivosprocedimento. Por exemplo:

Call :RemoveSubfoldersAndFiles C:\Temp

informação relacionada