Script PowerShell obtener el número total de ARCHIVOS y MB de un directorio

Script obtener el número total de archivos y MB




Explicación del Script

Se define la ruta de la carpeta que quieres analizar utilizando la variable $rutaCarpeta. Por ejemplo: "C:\ruta\de\la\carpeta". Puedes modificar esta ruta según tus necesidades.

Se utiliza la función Get-ChildItem con los parámetros -File y -Recurse para obtener todos los archivos dentro de la carpeta y sus subdirectorios. El resultado se guarda en la variable $contenidoCarpeta.

Se cuenta el número de archivos en la carpeta y sus subdirectorios utilizando la propiedad Count de la variable $contenidoCarpeta, y se guarda en la variable $numArchivos.

Se calcula la capacidad total en kilobytes (KB) sumando la propiedad Length de los archivos en la carpeta y sus subdirectorios utilizando la función Measure-Object con el parámetro -Property Length y luego dividiendo el resultado entre 1KB para convertirlo a kilobytes. El resultado se redondea a dos decimales utilizando la función [math]::Round(), y se guarda en la variable $capacidadTotalKB.

Se crea un nuevo objeto PowerShell utilizando la función New-Object con el tipo PSObject, y se define el contenido del objeto utilizando la sintaxis @{}. En este caso, se define el nombre de la carpeta, el número de archivos y la capacidad total en KB como propiedades del objeto.

Se utiliza la función ConvertTo-Csv para convertir el objeto en formato CSV, y se guarda en la variable $csvSalida. Se utiliza el parámetro -NoTypeInformation para omitir la información de tipo en la salida CSV.

Se genera el nombre del archivo de salida utilizando el nombre de la carpeta a analizar obtenido con la función Get-Item y la propiedad Name, y se concatena con la fecha y hora actual en el formato especificado (yyyyMMdd_HHmmss) utilizando el método ToString() de la clase DateTime. El resultado se guarda en la variable $nombreArchivoSalida.

Se utiliza la función Join-Path para unir la ruta de salida "C:\ruta\de\salida" con el nombre de archivo generado en la variable $nombreArchivoSalida, y se guarda en la variable $rutaSalida.

Finalmente, se utiliza la función Set-Content para escribir el contenido CSV en un archivo en la ruta de salida especificada con el nombre de archivo personalizado, y se muestra un mensaje en la consola indicando la ruta del archivo de salida.


powershell
# Ruta de la carpeta que quieres analizar 
$rutaCarpeta = "C:\ruta\de\la\carpeta" 

# Obtener el contenido de la carpeta y sus subdirectorios $contenidoCarpeta = Get-ChildItem $rutaCarpeta -File -Recurse 
# Contar el número de archivos 
$numArchivos = $contenidoCarpeta.Count 
# Calcular la capacidad total en MB 
$capacidadTotalKB = [math]::Round(($contenidoCarpeta | Measure-Object -Property Length -Sum).Sum / 1MB, 2) 
# Crear un objeto con los datos 
$objetoSalida = New-Object -TypeName PSObject -Property @{ Carpeta = $rutaCarpeta NumArchivos = $numArchivos CapacidadTotalKB = $capacidadTotalKB } 
# Convertir el objeto a CSV 
$csvSalida = $objetoSalida | ConvertTo-Csv -NoTypeInformation 
# Generar el nombre de archivo de salida con el nombre de la carpeta a analizar 
$nombreCarpeta = (Get-Item $rutaCarpeta).Name $nombreArchivoSalida = "{0}_{1}.csv" -f $nombreCarpeta, (Get-Date).ToString('yyyyMMdd_HHmmss') 
# Unir la ruta de salida con el nombre de archivo 
$rutaSalida = Join-Path -Path "C:\ruta\de\salida" -ChildPath $nombreArchivoSalida 
# Escribir el CSV en un archivo 
$csvSalida | Set-Content -Path $rutaSalida Write-Host "Se ha generado el archivo CSV en: $rutaSalida"

Comentarios