2017-01-09 3 views
1

Bonne journée,Suppression automatique des anciens fichiers temporaires SAS

Les tâches SAS courantes sont déclenchées périodiquement sur notre machine. De temps en temps, les tâches échouent et laissent des fichiers temporaires. (Stocké dans C: \ Users \ < nom_utilisateur> \ Fichiers temporaires \ AppData \ Local \ Temp \ SAS dans l'environnement Windows.)

Éventuellement, ils obstruent la machine. Actuellement, nous devons les supprimer à la main. Je me demande si SAS pourrait supprimer de vieux fichiers (disons une semaine plus) périodiquement? La planification du travail de nettoyage indépendant est ce que je recherche.

Je pourrais utiliser d'autres moyens pour le faire, comme des scripts python, mais un environnement de langage unique apportera la bénédiction et la bienveillance de la direction.

Edit: chemin ne montrait pas correctement

Répondre

2

Voici une macro qui appelle la commande DOS forfiles et supprime chaque fichier correspondant. Le pushd permet également de travailler avec des chemins 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 ; 

Ainsi, en utilisant votre exemple:

 
/* Delete everything over 7 days old */ 
%DELFILES(C:\Users\&SYSUSERID\AppData\Local\Temp\SAS Temporary Files\,*,7) ; 

Vous pouvez mettre cela dans un AutoExec, ou au début ou à la fin de vos programmes.

+0

Testé et confirmé comme solution de travail. – pinegulf

0

Cette réponse est un très bon point de départ si vous voulez une approche multi-plateforme basée sur les fonctions SAS uniquement, sans l'aide de commandes spécifiques à l'OS:

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

Vous auriez juste besoin d'ajouter une ou deux lignes supplémentaires pour parcourir tous les répertoires de travail et supprimer tous les fichiers.