Búsqueda de sitios web

Cómo comprobar si existe una carpeta en PowerShell


Antes de almacenar un archivo en una carpeta o intentar leer un archivo de una carpeta, es una buena idea verificar si la carpeta existe en PowerShell. De esta manera, evita cualquier error que pueda hacer que su secuencia de comandos se detenga.

Para hacer esto, podemos usar el cmdlet Test-Path. Este cmdlet devolverá True o False según el resultado, lo que le permitirá usarlo fácilmente en su secuencia de comandos.

En este artículo, le mostraré cómo utilizar el cmdlet Test-Path para comprobar si existe una carpeta.

Comprobar si existe una carpeta

La forma más sencilla de comprobar si existe un directorio en PowerShell es con el cmdlet Test-Path. Este cmdlet devuelve un valor booleano que podemos usar en una declaración if-else, por ejemplo.

Si ejecuta el cmdlet directamente en su consola, verá que simplemente devolverá Verdadero o Falso como una cadena:

Test-Path -Path "c:\temp\random-file.txt"

Un ejemplo más realista es comprobar si una carpeta ya existe antes de crear una nueva. Una forma sencilla de hacerlo es utilizar una declaración if-else. Para la ruta de la carpeta, no importa si tiene un \ al final de la ruta o no, pero funcionará.

Solo tenga en cuenta colocar la ruta entre comillas cuando la ruta contenga un espacio. Personalmente, siempre uso comillas alrededor de las rutas, esto hace que sea más fácil de leer y evita errores:

if (Test-Path -path "c:\temp") {
    # Folder exists
}else{
    # Folder doesn't exists
}

Si solo necesita saber si una ruta no existe, también podemos usar una declaración if corta, con la ayuda del operador -not. De esta manera, sólo ejecutamos el código dentro de la declaración if cuando el directorio no existe:

$folder = "C:\temp"

if (-not(Test-Path -path $folder)) {
    # Folder doesn't exists, create the folder
    New-Item -Path $folder -ItemType Directory
}

Comprobar que la ruta es válida

Además de comprobar si existe un directorio, también podemos comprobar si una ruta es válida. Esto no significa que la ruta (carpeta) realmente exista, pero verifica si la cadena dada es una ruta válida.

Normalmente usamos esto antes de crear una nueva carpeta o estructura de carpetas. El cmdlet New-Item puede crear todas las carpetas en varios niveles. En el siguiente ejemplo, verificamos si la carpeta no existe y si la ruta proporcionada es válida. Si ambos son verdaderos, entonces creamos la estructura de carpetas:

$folderStructure = "c:\temp\lab\test\"

if (-not(Test-Path $folderStructure) -and (Test-Path $folderStructure -IsValid)) {
    New-Item -path "c:\temp\lab\test\" -ItemType Directory
}

Concluyendo

Verificar si existe una carpeta o directorio antes de intentar usarlo puede evitar muchos errores en su secuencia de comandos de PowerShell. El cmdlet Test-Path es fácil de usar y se asegurará de que no intente acceder a carpetas no existentes ni crear carpetas duplicadas.

Espero que te haya gustado este artículo, si tienes alguna pregunta, deja un comentario a continuación.

Artículos relacionados