2017-01-09 154 views
1

美好的一天,自動刪除舊的SAS臨時文件

Mundane SAS作業在我們的機器上定期觸發。時不時工作失敗並留下臨時文件。 (存儲在Windows環境下的C:\ Users \ < user_Name> \ AppData \ Local \ Temp \ SAS Temporary Files \中。)

最終,這些堵塞了機器。目前我們必須手工刪除它們。我想知道SAS是否可以定期刪除舊的文件(讓我們說周加)舊文件?調度獨立的清理工作是我正在尋找的。

我可以使用其他方式來做到這一點,就像Python腳本一樣,但單一的語言環境會帶來管理上的祝福和仁愛。

編輯:路徑名無法正確顯示

回答

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) ; 

你可以把這個在自動執行,或者在你的程序的開始或結束。

+0

經過測試並確認爲工作解決方案。 – pinegulf

0

這個答案是一個很好的起點,如果你想僅僅基於SAS功能的跨平臺的方式,而無需使用特定於操作系統的命令:

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

您只需添加一兩行即可遍歷所有工作目錄並刪除所有文件。