簡體   English   中英

使用GPO注銷時刪除臨時文件

[英]Delete temp files on logout with GPO

我知道標題幾乎可以用“磁盤清理”來概括。 我已經看過通過腳本和Powershell(我不太了解)以及Task Scheduler來使用GPO部署DiskCleanup,但是在注銷/重新啟動/關閉時DiskCleanup永遠不會運行或不執行任何操作。 臨時文件和Windows Update文件繼續保持原樣。

我試圖將一個腳本附加到我認為可以運行的注銷中,但是從不刪除任何內容。 它所做的只是將注銷時間延長5分鍾。 相當的令人驚訝。

@echo off
del /s /f /q "%userprofile%\AppData\Local\Temp\*"

我還沒有充實需要刪除的所有內容,但是任何想法或想法都將不勝感激。 磁盤清理也不需要一直都在運行,每周只需運行一次,因為我們在安全措施方面使計算機保持最新狀態。 我嘗試了該腳本,因為我還認為它比運行應用程序要快。 我還需要將解決方案部署到約150台計算機。

謝謝,

我建議使用以下行的批處理文件:

@echo off
rem Delete all files and subfolders in directory for temporary files
rem of current user account, but keep the directory itself. Temporary
rem files and subdirectories currently in use are silently ignored.
del /F /Q "%TEMP%\*" 2>nul
for /D %%D in ("%TEMP%\*") do rd /Q /S "%%~D" 2>nul

rem Do the same as above for system temporary files directory.
rem This cleanup requires administrator privileges.
del /F /Q "%windir%\Temp\*" 2>nul
for /D %%D in ("%windir%\Temp\*") do rd /Q /S "%%~D" 2>nul

但是,此批處理文件不應在注銷或關閉時執行。

許多應用程序安裝程序都會將自身解壓縮到臨時文件目錄的子目錄中,以安裝或更新應用程序。 如果已經安裝了該應用程序,並且由於當前正在使用而無法更新一個或多個文件(例如,shell擴展DLL),則安裝程序會將文件保留在臨時文件目錄中,並將待處理的重命名添加到Windows注冊表中以替換其中的文件。由使用移動操作的臨時文件目錄中的文件使用。 Windows在下次重新引導時執行此掛起的重命名(移動)操作。

因此,建議不要在注銷或關閉過程中刪除所有文件和子目錄,因為它只會導致部分更新的應用程序。

默認情況下,Windows磁盤清理僅刪除超過7天(如果自Windows XP以來未更改)早於用戶在最近7天內重新啟動Windows的文件和文件夾(如果自Windows XP以來未更改)。 (我懷疑這是由Windows 8、8.1和10的用戶完成的,因為這些Windows上的默認設置是休眠狀態,並且在按電源按鈕時不會關閉。)

因此最好在大多數應用程序啟動之前登錄后運行此批處理文件。 但是, DELRD會跳過已經啟動的進程當前使用的臨時文件和文件夾。 如果Windows注冊表中設置了掛起的重命名操作,最好是簽入批處理文件,並且僅當當前未定義掛起的重命名操作時才進行清理。

注意:

以我的經驗,僅使用rd /Q /S "%TEMP%"並不是一個好主意,因為此命令還會刪除臨時文件目錄本身。 永遠不要這樣做,甚至不要暫時這樣做。 成功完全刪除后重新創建目錄不是一個好的解決方法,因為NTFS權限可能與以前不同。

我碰到過一次,創建了一個bat文件,並將其放入用戶啟動文件夾中,以便每次啟動時都將其清除。 但是,這無法回答您的GPO問題。 該腳本查找所有臨時目錄。 最后刪除@pause,以免看到結果。

@echo off

echo.
rem  ****************************************************************
rem  *** This file will clean a users temp directories            ***
rem  ****************************************************************
echo.
echo ********************************************
echo     Starting Search For temp Directories
echo ********************************************
echo.


cd %temp%
rd /S /Q %temp%
echo Cleaned out %temp% Directory
echo.
echo.


IF EXIST c:\Temp GOTO rootTemp
echo c:\Temp Not Found
echo.
echo.


:nextTemp
IF EXIST c:\windows\Temp GOTO winTemp
echo c:\windows\Temp Not Found
GOTO endTemp


:rootTemp
cd c:\Temp
rd /S /Q c:\temp

echo Cleaned out c:\Temp Directory
echo.
echo.
GOTO nextTemp



:winTemp
cd c:\windows\Temp
rd /S /Q c:\windows\temp
echo Cleaned out c:\windows\Temp

GOTO endTemp




:endTemp

echo.
echo ********************************************
echo       End Clean up of Temp Directories     
echo ********************************************
echo.
@pause

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM