自动删除旧的 SAS 临时文件

Automatically deleting old SAS temporary files

美好的一天,

普通的 SAS 作业会在我们的机器上定期触发。作业有时会失败并留下临时文件。 (存放在windows环境下C:\Users\\AppData\Local\Temp\SAS临时文件\。)

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

我可以用其他方式来做到这一点,比如python脚本,但是单一的语言环境会带来管理层的祝福和仁慈。

编辑:路径名显示不正确

如果您想要一种仅基于 SAS 函数的跨平台方法,而不使用 OS 特定命令,那么这个答案是一个很好的起点:

您只需添加一两行代码即可遍历所有工作目录并删除所有文件。

这是调用 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) ;

您可以将它放在自动执行程序中,或者放在程序的开始或结束处。