2015-04-17 2 views
2

Я пытаюсь создать запланированную задачу, чтобы очистить каталог разработки старого кода. Я видел несколько примеров, которые приближаются, но есть пара вещей, которые я не могу понять.Очистка каталога с определенными параметрами

Сначала в корневом каталоге, с которым я работаю, нет файлов. Он полон подкаталогов. Из подкаталогов мне нужно сохранить два, со всем их содержимым, независимо от того, что. Остальные каталоги удаляются вместе с их содержимым, если им больше 14 дней. Ничего в любом из каталогов не нужно сортировать по дате. Следует учитывать только даты начального каталога верхнего уровня. Вот что я имею, что не работает правильно ... Это удаляет все в папке, к моему ужасу!

# Set folder path 
$dump_path = "C:\TEMP" 
# Set min age of files 
$max_days = "-14" 
# Get the current date 
$curr_date = Get-Date 
# Determine how far back we go based on current date 
$del_date = $curr_date.AddDays($max_days) 
# Delete the files older than x days on the main folder level (Folders Excluded) 
Get-ChildItem $dump_path | ?{ !$_.PsIsContainer } | Where-Object { $_.LastWriteTime -lt $del_date } | Remove-Item -Force -Confirm:$False 
# Delete the folders (and all included content) older than x days on the main folder level (Files Excluded) 
Get-ChildItem $dump_path |? {$_.psiscontainer -and $_.lastwritetime -le (get-date).adddays(-14) -and (-not($_.name -eq "SoftwareInventory;atms"))} | Where-Object { $_.LastWriteTime -lt $del_date } | Remove-Item -Recurse -Force -Confirm:$False 

Я ценю любую помощь, которую я могу получить, чтобы это работало. Я не писал этот код. Это по частям от этого и других сайтов, кладя куски, которые я нашел вместе, пытаясь заставить его работать. Я довольно новичок в кодировании.

+0

Является ли „SoftwareInventory“ „Банкоматы“ в 2 папки, которые нужно держать? \ – Matt

+0

Да, эти две директории и все под ними должны быть сохранены –

ответ

1

Если чувствуете, как ваш вопрос исходит из этого пункта в вашем Where-Object

-not($_.name -eq "SoftwareInventory;atms") 

ли «SoftwareInventory» и «Банкоматы» папки, которые Вы пытаетесь сохранить? Если так, что синтаксис не будет работать, поскольку он ищет совпадение с папкой, буквально называемой «SoftwareInventory; atms». Я думаю, что нам нужно немного обновления на этом пункте

("SoftwareInventory","atms" -notcontains $_.name) 

Так что использует -notcontains и будет соответствовать всем папкам, которые не названы «SoftwareInventory» или «Банкоматы»

Bad Котировки?

Обычно это ошибка копирования, но у вас были нечетные цитаты в вашем вопросе, которые я удалил.

  • «Может вызвать проблемы
  • " стандартная цитата
+0

Мэтт, будет ли это держать все под этими исключенными каталогами? Я проверю это первое в понедельник! –

+0

Это не удалит что-либо под этими каталогами, так как вы не используете '-recurse' с' Get-ChildItem'. работайте по своему усмотрению. Всегда проверяйте сначала. – Matt

+0

Спасибо Мэтту, это сработало за fectly. Я даже удалил раздел файлов! Спасибо за помощь! –

Смежные вопросы