Удалить SEP VirusDef по дате

В моей сети есть SEP (Symantec Endpoint Protection). Я хочу удалить старые папки определения вирусов, которые имеют большой размер.

это содержимое папки "VirusDef":

Directory of \\10.1.66.101\c\Program Files\Common Files\Symantec Shared\VirusDefs

04/06/2014  09:14 PM    <DIR>          .
04/06/2014  09:14 PM    <DIR>          ..
03/24/2014  06:19 AM    <DIR>          20140322.002
03/26/2014  08:37 PM    <DIR>          20140325.009
03/31/2014  01:05 AM    <DIR>          20140329.002
04/03/2014  10:24 AM    <DIR>          20140401.023
09/15/2010  02:43 PM    <DIR>          BinHub
10/24/2013  12:56 AM           500,892 Cat.DB
04/03/2014  10:24 AM                34 definfo.dat
09/15/2010  02:43 PM    <DIR>          TextHub
01/10/2013  11:37 PM           500,660 umcat_01.db
04/03/2014  01:42 PM               141 usage.dat
               4 File(s)      1,001,727 bytes
               8 Dir(s)   1,114,185,728 bytes free

У меня должна остаться последняя измененная папка с номером, для этого случая это 20140401.023 и другие файлы и папки.

Я хочу удалить старые папки с номерами, такими как:

20140322.002
20140325.009
20140329.002

Конечно, эти папки получают свое имя по дате их создания.

пожалуйста помоги:)

1 ответ

Решение
@echo off
  setlocal enableextensions disabledelayedexpansion
  set "where=\\10.1.66.101\c\Program Files\Common Files\Symantec Shared\VirusDefs"
  for /f "skip=1 delims=" %%a in (
    'dir /b /ad /tc /o-d "%where%" ^|findstr /r /c:"^[0-9]*\.[0-9]*$"'
  ) do echo rmdir /s /q "%where%\%%a"

При этом используется команда dir для перечисления каталогов, отсортированных по убыванию по дате создания, отфильтрованных по findstr для возврата только каталогов с пронумерованными именами и расширениями, из этого списка, пропустить первый (более новый) и удалить остальную часть списка.

rmdir отображается только в консоли. Если вывод правильный, удалите echo команда.

Другие вопросы по тегам