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