Вопрос

Следующий скрипт удалит файлы в именованном каталоге старше 14 дней и запишет в .txt путь с удаленными файлами (нашёл этот скрипт на другом форуме .. кредит для шей):

dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n="Path";e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif

У меня есть 3 вопроса:

<Ол>
  • Что такое -lt, а что -le, а что -gt? Когда я буду использовать каждый из них
  • Приведенный выше скрипт удаляет только файл ... как я могу также удалить папки?
  • Приведенный выше сценарий основан на LastWriteTime .. а как насчет CreatedDate или LastAccessed времени?
  • Это было полезно?

    Решение

    Хорошо, поехали:

    <Ол>
  • -lt, -le и -gt являются операторами сравнения. lt означает меньше чем, le означает меньше или равно чем, а gt означает больше чем.

  • Удаление папок может стать опасным, если у вас нет контроля над тем, что в нем находится. У вас могут быть проблемы и, пожалуйста, помните о потере данных. Вы можете удалять папки, используя тот же командлет Remove-Item, просто играя с его параметрами. Проверьте эту статью, в ней есть отличные инструкции о том, как этого добиться: http://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887 , 00.html

  • Обычно для файлов, которые находились там некоторое время, LastWriteTime и CreatedDate и LastAccessTime будут одинаковыми. В файле только для чтения, таком как DLL, LastAccessTime может быть новее двух других. В файле для чтения / записи (например, в pst-файле outlook) WriteTime и AccessTime могут быть одинаковыми. По сути, это полностью ваше дело. Они работают так же, как LastWriteTime. Подумайте о природе файлов, которые вы хотите удалить, и продолжайте!

  • Другие советы

    -lt -le и -gt являются операторами сравнения вместо < ;, < =, > ;. Введите & Quot; help about_Comparison_Operators & Quot; в командной строке powershell для получения подробной информации о каждом типе и причинах их использования вместо тех, с которыми вы знакомы по другим языкам.

    Чтобы также удалить папки, вам нужно удалить часть ! $. PsIsContainer AND из фильтра where. Это удаляет все элементы из списков, которые являются каталогами.

    Я не уверен, что вы ищете после вопроса " как насчет CreatedDate или LastAccessed time " но вы можете просто использовать эти свойства аналогично LastWriteTime, но вам нужно определиться с логикой, которую вы пытаетесь достичь.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top