Advertisement
MrFreeZZZ

Clear WinTemps

Dec 28th, 2011
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.23 KB | None | 0 0
  1. import os
  2. import platform
  3. import sys
  4. import shutil
  5. import ctypes
  6. import tempfile
  7.  
  8. SHERB_NOCONFIRMATION = 1
  9. SHERB_NOPROGRESSUI   = 2
  10. SHERB_NOSOUND        = 4
  11.  
  12. def EmptyRecycleBin(options=SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND):
  13.     ctypes.windll.shell32.SHEmptyRecycleBinA(None, None, options)
  14.  
  15. def get_free_space(folder):
  16.     free_bytes = ctypes.c_ulonglong(0)
  17.     ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(folder), None, None, ctypes.pointer(free_bytes))
  18.     return int(round(free_bytes.value/1024))
  19.  
  20. def get_win_temp_path():
  21.     p = "WINDIR"
  22.     if p in os.environ:
  23.         return os.path.join(os.environ[p], "temp")
  24. #    for param in os.environ.keys():
  25. #        if (str.upper(param) == "WINDIR"):
  26. #            return os.environ[param] + "\\temp"
  27.     return "Error"
  28.  
  29. def clear_folder(folder):
  30.     for the_file in os.listdir(folder):
  31.         file_path = os.path.join(folder, the_file)
  32.         try:
  33.             if os.path.isfile(file_path):
  34.                 os.unlink(file_path)
  35.             else:
  36.                 shutil.rmtree(file_path)
  37.             print("[Deleted] ", file_path)
  38.         except:
  39.             print(str(sys.exc_info()[1]))
  40.  
  41. def clear_IE_cache():
  42.     try:
  43.         os.system("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8")
  44.         print("Выполнено\n")
  45.     except:
  46.         print(str(sys.exc_info()[1]))
  47.  
  48. def checkConf():
  49.     print("Проверяем наличие файла конфигурации...")
  50.     chk = os.path.exists('main_clear_temp.cfg')
  51.     if chk == False:
  52.         print("Файл не найден, создаем новый с дефолтными настройками...")
  53.         file = open("main_clear_temp.cfg", "w+")
  54.         file.writelines("10000000")
  55.         file.close()
  56.         print("Файл создан.")
  57.     return " "
  58.  
  59. def main():
  60.     if platform.system() == 'Windows':
  61.         print("Читаем конфигурацию...")
  62.         checkConf()
  63.  
  64.         f = open("main_clear_temp.cfg", "r")
  65.         s = f.readline()
  66.         try:
  67.             my_limit_free_space = int(s)
  68.         except:
  69.             print("Ошибка в файле конфигурации устанавливаем лимит по умолчанию 10 Gb")
  70.             my_limit_free_space = 10000000
  71.             print("Ок")
  72.         f.close()
  73.  
  74.         my_temp = tempfile.gettempdir()
  75.         my_win_temp = get_win_temp_path()
  76.         my_drive = my_temp[0:2]
  77.  
  78.         free_space1 = get_free_space(my_drive)
  79.         print("На диске [" + my_drive + "] свободно [" + str(free_space1) + "] Kb лимит [" + str(my_limit_free_space) + "] Kb\n")
  80.  
  81.         if (free_space1 < my_limit_free_space):
  82.             print("Директория пользовательского TEMP [" + my_temp + "]")
  83.             print("Очистка пользовательского TEMP\n")
  84.             clear_folder(my_temp)
  85.             print("\nВыполнено\n")
  86.  
  87.             print("Директория системного TEMP [" + my_win_temp + "]")
  88.             print("Очистка системного TEMP\n")
  89.             if (my_win_temp != "Error"):
  90.                 clear_folder(my_win_temp)
  91.                 print("\nВыполнено\n")
  92.             else:
  93.                 print("Невозможно определить путь к системному каталогу TEMP!")
  94.  
  95.  
  96.             print("Очистка кэша IE")
  97.             clear_IE_cache()
  98.  
  99.             print("Очистка корзины")
  100.             EmptyRecycleBin(options=SHERB_NOCONFIRMATION)
  101.             print("Выполнено")
  102.  
  103.             free_space2 = get_free_space(my_drive)
  104.             print("\nНа диске [" + my_drive + "] свободно [" + str(free_space2) + "] Kb лимит [" + str(my_limit_free_space) + "] Kb")
  105.             print("Освобождено " + str(free_space2 - free_space1) + " Kb\n")
  106.         else:
  107.             print("Лимит не превышен. Очистка не требуется.")
  108.  
  109.         print("Работа скрипта завершена.")
  110.     else:
  111.         print("Работа скрипта возможна только на платформе Windows.")
  112.  
  113. if __name__ == '__main__':
  114.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement