按日期删除SEP VirusDef

时间:2014-04-08 09:41:42

标签: batch-file symantec

我的网络中有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

ofcource,这些文件夹的名称取自创建日期。

请帮助:)

1 个答案:

答案 0 :(得分:2)

@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命令。