Видалення тимчасових файлів скриптом за розкладом - Вадим Стеркиной

  1. скрипти
  2. CMD
  3. VBS
  4. PowerShell
  5. Виконання очищення за розкладом
  6. готові файли
  7. Подяки

Як ви видаляєте тимчасові файли? Вручну запускаєте CCleaner або аналогічну програму, або налаштували її запуск за розкладом? Я обходжуся вбудованими засобами Windows, причому все зводиться буквально до однієї команди. Я хочу поділитися з вами двома скриптами, які давно служать мені вірою і правдою для видалення непотрібних файлів.

У Windows є утиліта для очищення диска, яку можна налаштувати для видалення заданих категорій файлів за розкладом . Вона легко впорається з очищенням тимчасових файлів з розташувань, відомих системі, але не дозволить видаляти непотрібні файли з заданої вами папки. За допомогою скриптів можна очищати не тільки тимчасові файли, але і будь-яку папку. Наприклад, я видаляю файли з папок Test і Temp, які служать для експериментів і тимчасового зберігання файлів як в завантаженнях, так і документах.

На відміну від програмних чистильників, скрипти можна гнучко налаштувати, а регулярність виконання очищення легко реалізувати за допомогою планувальника завдань Windows.

Ці скрипти дозволяють видаляти тільки файли заданого «віку» замість повного очищення папки.

У статті ви знайдете приклади скриптів і розповідь про те, як налаштувати завдання в планувальнику однією командою. Ви також зможете скачати готові файли і створити завдання для очищення папок за пару хвилин.

скрипти

Ви можете скористатися на вибір скриптами CMD, VBS і PowerShell.

CMD

Можна використовувати утиліту командного рядка forfiles.exe, що входить до складу Windows 7 і новіше (колись вона входила в Windows 2000 Resource Kit ). Однією командою видаляються всі файли з вказаної папки і вкладених в неї.

Команда для виконання

forfiles.exe / p% temp% / s / m *. * / d -14 / c "cmd / c del / q / f @file"

  • Замість% temp% (тимчасової папки в профілі) підставте свою папку (параметр / p)
  • Вік файлів за замовчуванням 14 днів (параметр / d), але ви можете задати будь-яке значення
  • Можна видаляти файли певного розширення по масці (наприклад, / m * .log)
  • За рекурсивне видалення (у вкладених папках) відповідає параметр / s

Звичайно, в скрипті ви можете використовувати кілька команд, кожна з яких буде видаляти задану папку. Довідка з використання утиліти викликається командою forfiles /? .

VBS

Наведений нижче скрипт VBS видаляє всі файли і папки, включно із захищеними, з висновком списку віддалених файлів.

On Error Resume Next intDays = Int (Wscript.arguments.Item (0)) strFldr = Wscript.arguments.Item (1) Set objFSO = CreateObject ( "Scripting.FileSystemObject") DelOld strFldr, intDays Function DelOld (sFldr, iDays) On Error Resume Next Dim oD, cF, cD, oI Set oD = objFSO.GetFolder (sFldr) Set cF = oD.Files Set cD = oD.SubFolders For Each oI In cF If DateDiff ( "d", oI.DateLastModified, Now) > iDays Then WScript.Echo oI.Path oI.Attributes = 0 oI.Delete End If Next For Each oI In cD DelOld oI.Path, iDays If oI.Size = 0 Then oI.Attributes = 0 oI.Delete End If Next End Function

  • Файли видаляються за датою зміни. Щоб видаляти за датою створення, замініть .DateLastModified на .DateCreated
  • Якщо не хочете видаляти захищені файли, закоментуйте рядок
    'OI.Attributes = 0

Команда для виконання

Скрипт можна запускати з командного файлу (CMD).

cscript // Nologo MyCleanUp.VBS 14% windir% \ temp> MyCleanupScript.Log

  • Замість% windir% \ temp підставте свою папку (в цьому прикладі видаляються файли з тимчасової папки в системному каталозі)
  • Вік файлів за замовчуванням 14 днів, але ви можете задати будь-яке значення
  • Список віддалених файлів буде за замовчуванням збережений у файлі% windir% \ system32 \ MyCleanupScript.Log, хоча можна вказати будь-який шлях і ім'я файлу

Як і у випадку з утилітою forefiles.exe, можна реалізувати очистку різних папок, вказавши кожну в окремій команді.

PowerShell

Скрипт на PowerShell був в блозі Сергія Мареничів в рамках уроку про операції з файлами, але тепер сторінка доступна тільки в архіві інтернету . Я скопіював ключове вміст для вас:

# З заданої папки видаляти всі файли і папки старше 14 днів $ Path = "C: \ temp" $ Days = "-14" $ CurrentDate = Get-Date $ OldDate = $ CurrentDate.AddDays ($ Days) Get-ChildItem $ Path -Recurse | Where-Object {$ _. LastWriteTime -lt $ OldDate} | Remove-Item

Запуск скрипта:

powershell.exe -ExecutionPolicy Bypass -noprofile -file Script.ps1

Виконання очищення за розкладом

Для виконання очищення папки за розкладом потрібно створити скрипт з ім'ям cleanup.cmd, що містить команду для запуску, і скопіювати його в будь-яку папку з PATH (наприклад,% windir% \ system32). Помістіть туди ж скрипт VBS або PowerShell, якщо ви вирішили використовувати його, а не утиліту forfiles.ехе.

Завдання за розкладом створюється однією командою:

Schtasks.exe / Create / RL Highest / TN CleanUP / SC Weekly / D SUN / ST 14:00 / TR "% WINDIR% \ system32 \ cleanup.cmd"

Завдання з ім'ям CleanUp буде виконуватися:

  • з найвищими правами (параметр / RL)
  • раз в тиждень (параметр / SC)
  • по неділях (параметр / D)
  • о 14:00 (параметр / ST)

Відкрийте Пуск - Пошук - Планувальник завдань і ви побачите в бібліотеці планувальника завдання CleanUp.

збільшити малюнок
збільшити малюнок

Можете перевірити роботу завдання в планувальнику. Для цього клацніть правою кнопкою миші по завданню і виберіть Виконати.

готові файли

завантажте архів і розпакуйте в будь-яку папку. В архіві варіанти forfiles і VBS.

  1. Задайте шлях до папки і вік файлів в скрипті CleanUp.cmd в одній з папок (кожна відповідає одному з описаних вище способів), після чого скопіюйте весь вміст папки в% windir% \ system32.
  2. Клацніть правою кнопкою миші на файлі schedule.cmd і виберіть Запуск від імені адміністратора, щоб створити завдання.

Подяки

Авторами скриптів, які я коли-то чого почерпнув від цієї теми конференції OSZone, є Keeper2006 і amel27 відповідно. У цій же темі ви знайдете інші цікаві варіанти вирішення даного завдання, і туди ж слід направляти питання по доопрацюванню скриптів під свої потреби.

А як ви рятуєтеся від непотрібних файлів - програмою або скриптом? Настроєна у вас очищення за розкладом?

Обговорення завершено.

Вручну запускаєте CCleaner або аналогічну програму, або налаштували її запуск за розкладом?
А як ви рятуєтеся від непотрібних файлів - програмою або скриптом?
Настроєна у вас очищення за розкладом?