Automation 自动删除旧的SAS临时文件

Automation 自动删除旧的SAS临时文件,automation,sas,temporary-files,Automation,Sas,Temporary Files,你好 普通SAS作业在我们的机器上定期触发。作业偶尔会失败并留下临时文件。(存储在windows环境中的C:\Users\\AppData\Local\Temp\SAS临时文件中。) 最后这些东西堵塞了机器。目前我们不得不手动删除它们。我想知道SAS是否可以定期删除旧的(比如说周加)文件?安排独立的清理工作是我要找的 我可以使用其他方法来实现这一点,比如python脚本,但单一语言环境将带来管理层的祝福和仁慈 编辑:路径名未正确显示如果您希望采用仅基于SAS功能的跨平台方法,而不使用特定于操作系

你好

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

最后这些东西堵塞了机器。目前我们不得不手动删除它们。我想知道SAS是否可以定期删除旧的(比如说周加)文件?安排独立的清理工作是我要找的

我可以使用其他方法来实现这一点,比如python脚本,但单一语言环境将带来管理层的祝福和仁慈


编辑:路径名未正确显示

如果您希望采用仅基于SAS功能的跨平台方法,而不使用特定于操作系统的命令,则此答案是一个非常好的起点:


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

以下是一个宏,它调用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 ; %宏文件(路径、掩码、年龄); %如果%SYSFUNC(fileexist(&PATH))%,则%DO; 数据为空; 填充“pushd”“&PATH”“&forfiles/P”“”/S/M&MASK/D-&AGE/C”“cmd/C del@PATH”“2>nul”管道truncover; 输入; 把"填入";; 跑 %结束; %修补; 因此,以你的例子:

/* Delete everything over 7 days old */ %DELFILES(C:\Users\&SYSUSERID\AppData\Local\Temp\SAS Temporary Files\,*,7) ; /*删除超过7天的所有内容*/ %DELFILES(C:\Users\&SYSUSERID\AppData\Local\Temp\SAS临时文件\,*,7); 您可以将其放在autoexec中,或者放在程序的开始或结束处