Verwendet jemand in dieser Community eine bestimmte Technik, um temporäre Daten (wie temporäre Windows-Ordner, Browser-Cache usw.) für alle Benutzer stapelweise zu löschen?
Der schwierige Teil scheint zu sein:
- Verwenden Sie eine Technik/ein Tool, das im Laufe der Zeit aktualisiert wird, um Änderungen in der Struktur jedes Produktordners zu berücksichtigen
- Zugriff auf die Ordner anderer Benutzer erlauben (als Administrator ausführen/maximale Berechtigungen)
Skripte/Batchdateien könnten eine Lösung sein, würden aber eine ständige Überwachung bei jedem Produktupdate erfordern, um das Löschen älterer Dateien/Ordnerstrukturen zu vermeiden …
Ihre Gedanken?
Antwort1
Ich hatte dieselbe Frage, aber motiviert durch den Wunsch, meine Bemühungen zur Fertigstellung der Malware-Bereinigungsvorgänge zu unterstützen. Hier ist das Befehlsskript, das ich mit Blick auf die Modularisierung geschrieben habe, damit es problemlos für zukünftige Betriebssysteme und temporäre Dateispeicherorte erweitert werden kann (ich habe es geschrieben, bevor ich PowerShell gelernt habe, und habe es nicht aktualisiert). Da es auf alle Benutzerprofilordner auf dem Computer sowie auf Windows-Systemordner zugreift, muss das Skript mit erhöhten Rechten ausgeführt werden.
@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
Erweitern der Funktionalität des Skripts
Ein Teil der Erweiterbarkeit des Skripts liegt in der Verwendung der :RemoveSubfoldersAndFiles
Prozedur. Um den Inhalt eines Ordners zu löschen, rufen Sie einfach diese Prozedur auf und übergeben Sie einen Ordnerpfad als einzigen Parameter (ohneAnführungszeichen). Die Routine verarbeitet problemlos nicht vorhandene Pfade, Ordner, auf die aus irgendeinem Grund nicht zugegriffen werden kann, oder den Fall, dass einige Dateien oder Ordner unterhalb des Pfads verwendet werden oder sich aus anderen Gründen nicht löschen lassen.
So bereinigen Sie zusätzliche Ordner im Profil jedes Benutzers
Im Abschnitt „ Rem Clean up these folders
Weitere Anrufe hinzufügen“:UnterordnerUndDateienEntfernenSubroutine. Um beispielsweise alles im \AppData\Local\Microsoft\Windows\Temporary Internet Files
Ordner jedes Benutzers zu löschen, fügen Sie die Zeile hinzu:
Call :RemoveSubfoldersAndFiles %UserProfilePath%\AppData\Local\Microsoft\Windows\Temporary Internet Files
Beachten Sie die Verwendung der skriptdefinierten %UserProfilePath%
Variable anstelle der typischen %USERPROFILE%
Variable. Die Version des Skripts wird dynamisch aktualisiert, während das Skript jedes Benutzerprofil auf dem Computer durchläuft.
So bereinigen Sie Ordner außerhalb von Benutzerprofilen
Fügen Sie in der :SetUserProfPath
Subroutine erneut Aufrufe der:UnterordnerUndDateienEntfernenVorgehensweise. Beispiel:
Call :RemoveSubfoldersAndFiles C:\Temp