美好的一天,
我们的机器会定期触发Mundane SAS作业。工作偶尔会失败并留下临时文件。 (存储在Windows环境中的C:\ Users \< user_Name> \ AppData \ Local \ Temp \ SAS Temporary Files \中。)
最终这些堵塞了机器。目前我们必须手动删除它们。我想知道SAS是否可以定期删除旧文件(比如说周加)旧文件?调度独立清理工作是我正在寻找的。
我可以使用其他方法来执行此操作,例如python脚本,但单一语言环境将带来管理祝福和仁慈。
编辑:路径名未正确显示
答案 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
您只需要添加一两行来迭代所有工作目录并删除所有文件。