@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

powershell-verificar-si-existe-una-carpeta-4

Powershell: Verificar si existe una carpeta

Powershell: Verificar si existe una carpeta

Hoy entrada rápida…

Os explico cómo verificar si existe una carpeta o ruta mediante Powershell.

Esto es muy útil si estás desarrollando un script que tiene varias opciones. Os pongo un ejemplo, imaginaros que tenéis que lanzar un programa que según donde se lance puede estar en 64 o en 32 bits. Esto implicaría que nos daría algún error, en alguna de las opciones.

Lo voy a enseñar con Office. En un sistema Windows, implicaría que esté instalado en las siguientes rutas (es un ejemplo):

En 32 bits: "C:\Program Files (x86)\Microsoft Office\Office16\"
En 64 bits: "C:\Program Files\Microsoft Office\Office16\"

La forma rápida de testear que existe es con:

Test-Path "C:\Program Files (x86)\Microsoft Office\Office16\"
Test-Path "C:\Program Files\Microsoft Office\Office16\"

Cuando lanzáis estos comandos, os devuelven True si existe y False si no existe:

powershell-verificar-si-existe-una-carpeta-1

Esto ya os permite trabajar con esos valores, o hacer un if directamente para un valor concreto. Por ejemplo:

if (-not (Test-Path "C:\Program Files\Microsoft Office\Office16\"))
{
"No existe la carpeta"
}

powershell-verificar-si-existe-una-carpeta-2

Si lo que queremos es validar varias opciones, podemos pasar los valores a variables y trabajar los resultados:

 

E iríamos probando y modificando el script artificialmente, para validar todas las opciones:

powershell-verificar-si-existe-una-carpeta-3

powershell-verificar-si-existe-una-carpeta-5

powershell-verificar-si-existe-una-carpeta-4

Espero os parezca interesante…ya que es gratis, comparte ;P

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

¿Te ha gustado la entrada SÍGUENOS EN TWITTER O INVITANOS A UN CAFE?

El Blog de Negu

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

seguridad-contenedores-docker-1

Seguridad contenedores Docker

Seguridad contenedores Docker Hoy os voy a entregar varias pautas para mejorar la seguridad de …

5 comentarios

  1. Hola Raúl
    Buenas tardes, gracias por tus publicaciones nos ayudan mucho, sobre todo a los que no sabemos y aparte de saludarte te escribo para solicitar tu ayuda, si es que se puede.
    Hago un respaldo semanal de uno de mis equipos por medio de un script de powershell, creo una carpeta con la fecha del día con el siguiente comando en powershell y realizo la copia con robocopy
    md $((get-date).toString(‘yyMMdd’))

    La carpeta se crea sin problema, el problema es que solo caben 3 respaldos en el disco y tengo que estar borrando manualmente y si se me olvida o no estoy, no se realiza el respaldo por falta de espacio.

    En el disco se van creando carpetas 230919, 230926, 231003 para el siguiente respaldo debo borrar la carpeta 230919 y es ahí dónde solicito tu ayuda.

    Hay forma de ir borrando la carpeta mas antigua con un script de powershell?
    Me puedes ayudar a crear el script?

    Espero me puedas ayudar, por el momento me despido y quedo al pendiente por si tuvieras una respuesta. Gracias.

    Saludos. . .

    • Hola,

      Entiendo (habría que probarlo en una carpeta de test), que sería algo así:

      Get-ChildItem -Path “RUTA-DONDE-ESTAN-LAS-CARPETAS” | Sort-Object LastWriteTime | Select-Object -First 1 -Unique | Remove-Item -Force -Recurse

      Un saludo

      • Hola Raúl,

        Gracias por tu pronta respuesta, por alguna razón las carpetas no se pueden borrar, si selecciona la carpeta pero no la borra.
        Parece que es un tema de seguridad y de acceso a las carpetas, cuando hago mi respaldo lo hago con el siguiente comando
        md $((get-date).toString(‘yyMMdd’))
        Robocopy E:\ G:\$((get-date).toString(‘yyMMdd’))\ *.* /E /R:2 /W:3 /SEC

        Cuando lo borro manualmente marca algunos errores de seguridad que omito.

        He tratado de hacer pruebas pero cuando creo las carpetas todas tienen la misma de creación del día de hoy y he intentado cambiarles la fecha pero no se puede, esto lo hago con el siguiente comando
        Get-ChildItem “G:\230818” | % {$_.LastWriteTime =’08/18/2023 1:00′}
        para cambiar la fecha solo a esa carpeta, si uso G:\ le cambia la fecha a todas las carpetas.
        Seguramente algo estoy haciendo, ya sea en el respaldo o al momento de borrar, mientras sigo haciendo pruebas.

        Saludos. . .

        • Hazlo como te indico yo, pero entiendo que debes lanzarlo con una tarea programada con permisos de administrador.
          Salu2

          • Hola Raúl,
            Buenas tardes, ya lo hice pero no la borro la carpeta y debido el tiempo lo tuve que hacer manual, mañana sigo con las pruebas y lo intento nuevamente.
            Para hacer pruebas he creado 3 carpetas pero todas se crean con la misma fecha como le puedo cambiar la fecha de modificación o creación.

            Gracias por el apoyo.
            Saludos.

Deja una respuesta

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

tres × 5 =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu