使用SAS从具有2年历史的外部文件夹中删除zip文件

时间:2016-08-18 17:20:20

标签: sas

Iam尝试下面的代码,我能够删除zip格式的文件,但我需要知道我们如何过滤只删除2岁的文件。文件名为SFRE_BIL_SIT_20160812_134317_PAM_FILES1.zip 在进行过滤以删除2年前的文件时,我需要只关注文件的年份和月份部分进行删除,因为日期部分会发生变化。请在下面找到代码

transform

1 个答案:

答案 0 :(得分:0)

如果您的文件以相同的方式命名 - 3部分代码然后是日期,所有文件都以_分隔,您可以使用scan()。您已经使用scan()来检查扩展名为zip的文件。您可以这样做,从文件名中提取日期部分,然后解析它并转换为数字。

解决方案1 ​​

member_name的第四个字是YYYYMMDD部分:

datestring = scan(member_name,4,'_')

前4位是年份:

year = input(substr(datestring,1,4),best.)

然后是2个月的数字:

month = input(substr(datestring,5,2),best.)

最后2位数字(以防万一你需要一天):

day = input(substr(datestring,5,2),best.)

最后只与实际月份和年份进行比较:

if month = month(today()) and year = year(today()) then do;
    *your code for deleting file;
end;

但是t只适用于给定的月份。要删除超过2年的文件,您可以执行以下操作。

解决方案2

已经拥有所有日期部分构建日期:

date = mdy(month, day, year)

然后将其与实际日期减去2年进行比较。要从今天起2年过去,请使用intnx()函数

if intnx('year', today(), -2, 'S') > date do;
    *your code for deleting file;
end;