Esta función la hice pensando en que a veces quiero obtener de forma recursiva el listado de archivos en mi equipo para eliminarlos, renombrarlos u ordenarlos, por ello hice una función que retorna en un archivo txt:
La forma de usarlo es muy sencilla, en tu terminal mueve a la carpeta que deseas obtener de forma recursiva el
listado
de archivos, luego llama a la función, ejemplo:
Quiero exportar la información de mi carpeta de descargas, y quiero que el archivo se llame carpeta_descargas.
Cómo podemos ver en la imagen anterior, el archivo se guardará como carpeta_descargas y al final te dice en que ruta se guardará el documento, te recomiendo que abras un nuevo archivo de excel e importes el documento para que veas la información tabulada.
Copiar código
function exportDirectoryFilesTxt {
param(
[string]$fileName
)
# Asegurarse de que el archivo tenga la extensión .txt
$fileName = "$fileName.txt"
# Crear el archivo
New-Item -Path $fileName -ItemType File -Force
# Obtener el directorio actual
$curPath = $pwd
# Definir los encabezados
$headers = "File_Name|Extension_File|Date_Last_Write_Time|File_Path|MB_Size_File|Year|Month|Day|Hour|Minute|Second"
Set-Content -Path $fileName -Value $headers | Out-Null
# Obtener los archivos y añadir su información al archivo
Get-ChildItem -File -Recurse -Path $curPath | ForEach-Object {
$iterObj = $_.LastWriteTime
$fileSizeMB = [math]::Round((Get-Item -Path $_.FullName).Length / 1MB, 2) # Redondear a 2 decimales
$fileInfo = "$($_.Name)|$($_.Extension)|$($_.LastWriteTime)|$($_.FullName)|$fileSizeMB|$($iterObj.Year)|$($iterObj.Month)|$($iterObj.Day)|$($iterObj.Hour)|$($iterObj.Minute)|$($iterObj.Second)"
Add-Content -Path $fileName -Value $fileInfo | Out-Null
}
# Mover el archivo al escritorio (asegúrate de que $desktop esté definido)
$desktop = [Environment]::GetFolderPath("Desktop")
Move-Item -Path $fileName -Destination $desktop
Write-Host "Archivo guardado en la ruta: $desktop\$fileName"
}