Publié le :

Nettoyage du répertoire temporaire Windows

Ce code est également disponible en : English Español
Attention : Ce code nécessite des droits administrateur.
Cette macro SAS©, nommée `ClearTEMPWORK`, est conçue pour vérifier l'existence d'un répertoire spécifique (`c:\tempwork`) sur un système d'exploitation Windows. Si le répertoire existe, elle tente de libérer une éventuelle libname `tempwork` (si elle est assignée à ce chemin) puis utilise les commandes système `del` et `rd` via `%sysexec` pour supprimer récursivement tous les fichiers et sous-répertoires contenus dans `c:\tempwork`, ainsi que le répertoire lui-même. Bien que le code puisse être techniquement exécuté sur SAS© Viya 4 si `%sysexec` est activé et si Viya est déployé sur Windows, il est fortement dépendant de l'environnement Windows et l'utilisation de `%sysexec` est généralement restreinte pour des raisons de sécurité dans les environnements de production Viya.
Analyse des données

Type : N/A


Cette macro ne traite pas directement de données SAS mais interagit avec le système de fichiers du serveur pour la gestion d'un répertoire temporaire. Aucune source de données SAS n'est lue ou écrite par cette macro.

1 Bloc de code
MACRO
Explication :
Ce bloc définit la macro `ClearTEMPWORK`. Il déclare une variable locale `rc`. Il utilise `%sysfunc(fileexist)` pour vérifier si le chemin `c:\tempwork` existe. Si le répertoire existe (`&rc ne 0`), le code tente de libérer une potentielle libname SAS nommée `tempwork` à l'aide de `%sysfunc(libname(tempwork))`. Ensuite, il utilise `%sysexec` pour exécuter des commandes du système d'exploitation Windows : `del /Q "c:\tempwork\*.*"` pour supprimer tous les fichiers de manière silencieuse et `rd /Q "c:\tempwork"` pour supprimer le répertoire vide de manière silencieuse. Il est crucial de noter que cette macro est spécifique à Windows et que l'utilisation de `%sysexec` est souvent désactivée ou soumise à des restrictions strictes dans les environnements SAS Viya 4 pour des raisons de sécurité et de portabilité.
Copié !
1%macro ClearTEMPWORK;
2%local rc;
3%let rc=%sysfunc(fileexist("c:\tempwork"));
4%IF &rc ne 0 %THEN %DO;
5 %let rc=%sysfunc(LIBNAME(tempwork));
6 %sysexec del /Q "c:\tempwork\*.*";
7 %sysexec rd /Q "c:\tempwork";
8%END;
9%mend cleartempwork;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« L'usage de %sysexec avec les commandes DOS del et rd est extrêmement puissant mais risqué. Assurez-vous que le chemin est toujours codé en dur ou strictement validé pour éviter toute suppression accidentelle de répertoires systèmes. De plus, l'option /Q (Quiet) est indispensable ici pour éviter que SAS ne reste bloqué en attendant une confirmation utilisateur invisible en mode batch. »