Búsqueda de sitios web

¿Cómo comprobar si una carpeta está vacía en PowerShell?


Mientras trabaja con archivos y directorios, es posible que tenga que comprobar si una carpeta está vacía. PowerShell proporciona diferentes formas de hacer esto. En este tutorial de PowerShell, exploraremos diferentes métodos para buscar un directorio vacío usando PowerShell.

Para comprobar si una carpeta está vacía en PowerShell, puede utilizar el cmdlet Get-ChildItem y verificar el recuento de contenidos. Por ejemplo:

$folderItems = Get-ChildItem -Path "C:\MyFolder"
$isFolderEmpty = $folderItems.Count -eq 0

Si $isFolderEmpty es $true, la carpeta está vacía; de lo contrario, contiene archivos o subdirectorios.

Comprobar si una carpeta está vacía en PowerShell

Aquí le mostraré 5 métodos para verificar si una carpeta está vacía usando PowerShell. Todos los scripts los he ejecutado y probado.

Método 1: uso del cmdlet Get-ChildItem

El cmdlet Get-ChildItem se utiliza para enumerar el contenido de un directorio. Al verificar el recuento de elementos dentro de la carpeta, podemos determinar si está vacía.

Aquí está el script completo de PowerShell.

$directoryPath = "C:\MyFolder"
$items = Get-ChildItem -Path $directoryPath
if ($items.Count -eq 0) {
    Write-Host "'$directoryPath' directory is empty"
} else {
    Write-Host "'$directoryPath' directory is not empty"
}

Este script establece la ruta del directorio que desea verificar y luego usa Get-ChildItem para recuperar el contenido. Si el recuento de elementos es cero, significa que el directorio está vacío.

Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script de PowerShell usando el código VS.

Método 2: usar Get-ChildItem con comprobaciones adicionales

A veces, es posible que desees comprobar si un directorio está vacío, incluso si contiene archivos o subdirectorios ocultos.

El siguiente script de PowerShell también buscará archivos ocultos.

$directoryPath = "C:\MyNewFolder"
$items = Get-ChildItem -Path $directoryPath -Recurse -Force
if ($items.Count -eq 0) {
    Write-Host "'$directoryPath' directory is completely empty, including hidden files and subdirectories"
} else {
    Write-Host "'$directoryPath' directory contains files or subdirectories"
}

El indicador -Recurse garantiza que el comando verifique todos los subdirectorios, mientras que -Force incluye archivos ocultos y del sistema en el recuento.

Método 3: uso del cmdlet Medir objeto

Otra forma de comprobar si hay una carpeta vacía en PowerShell es mediante el cmdlet Measure-Object. Este cmdlet mide varias propiedades de los objetos, incluido el recuento de elementos de un directorio.

$directoryPath = "C:\MyFolder"
$isEmpty = (Get-ChildItem -Path $directoryPath | Measure-Object).Count -eq 0
if ($isEmpty) {
    Write-Host "'$directoryPath' directory is empty"
} else {
    Write-Host "'$directoryPath' directory is not empty"
}

Este script canaliza la salida de Get-ChildItem a Measure-Object, que cuenta los elementos. Si el recuento es igual a cero, el directorio está vacío.

Método 4: uso de la clase [System.IO.Directory]

También puede utilizar las clases .NET dentro de PowerShell; la clase [System.IO.Directory] proporciona una forma de interactuar con los sistemas de archivos.

A continuación se muestra el script completo de PowerShell para verificar si un directorio está vacío en PowerShell usando la clase .Net.

$directoryPath = "C:\MyFolder"
$directoryInfo = [System.IO.Directory]::GetFileSystemEntries($directoryPath)
if ($directoryInfo.Length -eq 0) {
    Write-Host "'$directoryPath' directory is empty"
} else {
    Write-Host "'$directoryPath' directory is not empty"
}

Este script utiliza el método GetFileSystemEntries para recuperar las entradas del directorio especificado. Si la longitud de la matriz es cero, el directorio está vacío.

Conclusión

Comprobar si un directorio está vacío es un requisito muy común en PowerShell. En este PowerShell, he explicado diferentes métodos para verificar si una carpeta está vacía en PowerShell, como usar el cmdlet Get-ChildItem y usar el cmdlet Measure-Object, etc.

Artículos relacionados