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:

  1. Nombre del archivo
  2. Extensión
  3. Fecha última modificación
  4. Ruta del archivo
  5. Tamaños del Archivo
  6. Año
  7. Mes
  8. Día
  9. Hora
  10. Minuto
  11. Segundo

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.

  1. Abrir un nuevo documento de Excel.
  2. En la barra de herramientas seleccionar la opción de datos.
  3. Seleccionar la opción "De texto/CSV".
  4. Ir a la ruta donde se guardó el archivo y seleccionarlo.
  5. En la ventana emergente seleccionar las opciones:
  6. Origen de archivo: 1252: Europeo occidental (Windows)
  7. Delimitador: --Personalizado-- y en la casilla de abajo coloca un pipe |
  8. Detección del tipo de datos: Basado en las primeras 200 filas
 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"
}