Articles

Probar si existe un fichero con Powershell

Otro post para mí que es sencillo y espero que sirva de ejemplo para la gente que está intentando iniciarse en el mundo de los blogs como#SQLNewBloggers.

Hace un tiempo escribí un script de PowerShell (PoSh) para descargar los ficheros XML de SQL Saturday utilizados para la aplicación Guidebook. Estos contienen un montón de información que quería recoger, transformar y mantener alrededor.

Sin embargo, el script no era genial. Básicamente hacía un bucle un número determinado de veces y volvía a descargar los archivos. No es la solución más eficiente, especialmente si quiero que esto se ejecute regularmente.

Una de las mejoras que quería hacer era comprobar si el archivo existe, y si no, entonces descargarlo. Sin embargo, si existe, entonces me salto el archivo. Sé que esto significa que no obtengo los archivos actualizados si los horarios cambian, lo cual es posible, pero en ese caso, puedo simplemente eliminar el archivo de mi escritorio y seguir desde allí.

Hice una búsqueda rápida, y encontré algunos enlaces al cmdlet Test-Path. Esencialmente le das una ruta de archivo y devuelve true o false. Casi exactamente lo que necesito. Esto es lo que añadí a mi código:

if (Test-Path $DestinationFile) {

#hacer algo

Sin embargo, quiero tomar medidas si el archivo no existe. En la mayoría de los idiomas, añadiría un ! delante para significar «no». Sin embargo eso no funciona en PoSh, al igual que > no significa mayor que.

Otra búsqueda me mostró el operador -NOT. Es lo que necesito, pero no puedo hacer esto:

if (-NOT Test-Path $DestinationFile) {

#hacer algo

}

En cambio, necesito tener una única expresión para -NOT, lo que significa más paréntesis. No es un gran problema. Utilicé este código:

if (-NOT (Test-Path $DestinationFile)) {

#do something

Eso funcionó muy bien y ahora sólo descargo los archivos que necesito. Si quiero volver a descargar (para eventos más nuevos), simplemente borro esos archivos y vuelvo a ejecutar el script.

SQLNewBlogger

Este post surgió cuando empecé a trabajar en el script. En realidad me llevó más tiempo escribir esto que encontrar la solución, añadirla al código y probarla. Ese proceso fue de unos 5 minutos.

Este post tardó unos 10 minutos en escribirse. También tenía un segundo post basado en modificaciones similares al script, así que lo hice en otros 5 minutos.

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *