Publicado el :

Limpieza del directorio temporal de Windows

Este código también está disponible en: English Français
Attention : Este código requiere privilegios de administrador.
Esta macro SAS©, llamada `ClearTEMPWORK`, está diseñada para verificar la existencia de un directorio específico (`c:\tempwork`) en un sistema operativo Windows. Si el directorio existe, intenta liberar una posible libname `tempwork` (si está asignada a esa ruta) y luego utiliza los comandos del sistema `del` y `rd` a través de `%sysexec` para eliminar recursivamente todos los archivos y subdirectorios contenidos en `c:\tempwork`, así como el propio directorio. Aunque el código puede ejecutarse técnicamente en SAS© Viya 4 si `%sysexec` está activado y si Viya está desplegado en Windows, depende en gran medida del entorno de Windows y el uso de `%sysexec` suele estar restringido por razones de seguridad en entornos de producción de Viya.
Análisis de datos

Type : N/A


Esta macro no procesa directamente datos SAS, sino que interactúa con el sistema de archivos del servidor para la gestión de un directorio temporal. Esta macro no lee ni escribe ninguna fuente de datos SAS.

1 Bloque de código
MACRO
Explicación :
Este bloque define la macro `ClearTEMPWORK`. Declara una variable local `rc`. Utiliza `%sysfunc(fileexist)` para verificar si la ruta `c:\tempwork` existe. Si el directorio existe (`&rc ne 0`), el código intenta liberar una potencial libname SAS llamada `tempwork` usando `%sysfunc(libname(tempwork))`. Luego, usa `%sysexec` para ejecutar comandos del sistema operativo Windows: `del /Q "c:\tempwork\*.*"` para eliminar todos los archivos de forma silenciosa y `rd /Q "c:\tempwork"` para eliminar el directorio vacío de forma silenciosa. Es crucial notar que esta macro es específica de Windows y que el uso de `%sysexec` a menudo está deshabilitado o sujeto a restricciones estrictas en los entornos de SAS Viya 4 por razones de seguridad y portabilidad.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.