自动删除旧的SAS临时文件

时间:2017-01-09 07:12:03

标签: automation sas temporary-files

美好的一天,

我们的机器会定期触发Mundane SAS作业。工作偶尔会失败并留下临时文件。 (存储在Windows环境中的C:\ Users \< user_Name> \ AppData \ Local \ Temp \ SAS Temporary Files \中。)

最终这些堵塞了机器。目前我们必须手动删除它们。我想知道SAS是否可以定期删除旧文件(比如说周加)旧文件?调度独立清理工作是我正在寻找的。

我可以使用其他方法来执行此操作,例如python脚本,但单一语言环境将带来管理祝福和仁慈。

编辑:路径名未正确显示

2 个答案:

答案 0 :(得分:2)

这是一个调用DOS forfiles命令的宏,并删除每个匹配的文件。 pushd允许它也可以与UNC路径一起使用。

%MACRO DELFILES(PATH,MASK,AGE) ;
  %IF %SYSFUNC(fileexist(&PATH)) %THEN %DO ;
    data _null_ ;
      infile "pushd ""&PATH"" && forfiles /P ""."" /S /M &MASK /D -&AGE /C ""cmd /c del @path"" 2>nul" pipe truncover ;
      input ;
      put _INFILE_ ;
    run ;
  %END ;
%MEND ;

所以,使用你的例子:

/* Delete everything over 7 days old */
%DELFILES(C:\Users\&SYSUSERID\AppData\Local\Temp\SAS Temporary Files\,*,7) ;

您可以将其放入自动执行中,或者放在程序的开头或结尾。

答案 1 :(得分:0)

如果您想要一种仅基于SAS功能的跨平台方法,而不使用特定于操作系统的命令,那么这个答案是一个非常好的起点:

https://stackoverflow.com/a/1412947/667489

您只需要添加一两行来迭代所有工作目录并删除所有文件。