Необходимо удалить файлы (* .log. *) Из подкаталогов с таким же именем, разбросанных во многих корневых каталогах

Мне нужно удалить журналы с расширением *. log . * выходит в подпапку с именем SessLogs , WorkflowLogs в корневом каталоге d: \ software \ Bil

Аналогично у меня есть папки SessLogs , Журналы рабочего процесса во многих подкаталогах с разными именами, например Bil ,как этого добиться У меня есть образец сценария, созданный, как показано ниже, но он нуждается в некотором обновлении.

Структура каталогов, например

Программное обеспечение -> Wel -> "" SessLogs "и" WorkflowLogs "
Программное обеспечение -> Gim -> "SessLogs" и "WorkflowLogs"
Программное обеспечение -> Ren -> "" SessLogs "и" WorkflowLogs "

$Path = "D:\software"
$Daysback = "-30"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
get-childitem "D:\software*" -include "*.*" -force -recurse |where-object { (-not $_.PSIsContainer) -and ($_.creationtime -lt $DatetoDelete) } |remove-item -whatif

1
задан 17 July 2019 в 19:19
1 ответ

Я не уверен, правильно ли я понимаю ваше требование, но если Я знаю, у тебя это уже было. Что я изменил:

  • При использовании Get-Childitem с recurse вам не нужно добавлять звездочку (*) в конце пути поиска.
  • Поскольку вы ищите файлы, содержащие «.log.», просто используйте его для параметра include, а не «*. *», который будет искать все файлы с точкой.
  • вы также можете избавиться от ( -not $ _. PSIsContainer) , если вы знаете, что ни одна из ваших папок не содержит строки «.log». - но вы можете оставить его на всякий случай.

Таким образом, это должно сделать следующее: Получите все элементы в D: \ Software и всех его подпапках, содержащих строку «.log». в имени, которые не являются каталогами и были созданы 30 дней назад или ранее - затем удалите их.

$Path = "D:\software"
$Daysback = "-30"
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
get-childitem "D:\software" -include "*.log.*" -force -recurse |where-object { (-not $_.PSIsContainer) -and ($_.creationtime -lt $DatetoDelete) } |remove-item -whatif
0
ответ дан 4 December 2019 в 02:49

Теги

Похожие вопросы