Ми вже показали вам, наскільки гнучкою може бути оболонка Linux , але це не означає, що Windows ще більше відстає. Ось два прийоми, якими ви можете скористатися залежно від ваших уподобань оболонки, cmd або PowerShell.
PowerShell 3
Get-ChildItem –Шлях “C: \ Резервні копії” –Повторний | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Видалити елемент
PowerShell 2
Get-ChildItem –Шлях “C: \ Резервні копії” –Повторний | Де-Об'єкт{$_.CreationTime –lt (Get-Date).AddDays(-5)} | Видалити елемент
Пояснення
- По-перше, ми отримуємо об'єкти FileInfo та DirectoryInfo у Path C: \ Backups.
- Об'єкти FileInfo та DirectoryInfo містять властивість CreationTime, тому ми можемо фільтрувати колекцію за допомогою цього.
- Потім оператор –lt (менше ніж) використовується для порівняння властивості CreationTime об’єктів із функцією Get-Date (поточна дата) віднімається 5 днів.
- Потім у нас залишається колекція об’єктів, створених понад 5 днів тому, яку ми передаємо в Remove-Item.
Про порада
Щоб побачити, що буде видалено, ви можете використовувати параметр –WhatIf:
Get-ChildItem –Шлях “C: \ Резервні копії” –Повторний | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Remove-Item –WhatIf
Командний рядок
Незважаючи на те, що ми рекомендуємо використовувати один із методів PowerShell, не вдаючись до жодної делікатної деталі, ви також можете зробити це з командного рядка.
forfiles -p "C: \ Резервні копії" -s -m *. * -d -5 -c "cmd / c del @path"
Про порада
Щоб побачити, які файли збираються видалити, ви можете використовувати echo.
forfiles -p "C: \ Резервні копії" -s -m *. * -d -5 -c "cmd / c echo @file"