function Invoke-FileTypeInfo { param ( [string]$Folder = ".", [switch]$Recurse = $true ) if (-not (Get-Command exiftool -ErrorAction SilentlyContinue)) { Write-Error "❌ exiftool no está instalado o no está en el PATH." return } # Mapeo de tipos reales a extensiones estándar $typeToExtension = @{ "JPEG" = ".jpg" "PNG" = ".png" "WEBP" = ".webp" "GIF" = ".gif" "MP4" = ".mp4" "MOV" = ".mov" } $files = Get-ChildItem -Path $Folder -File -Recurse:$Recurse $changed = @() foreach ($file in $files) { $ext = $file.Extension.ToLower() $actualType = & exiftool -s3 -FileType "$($file.FullName)" 2>$null if ($actualType) { $actualType = $actualType.ToUpper() $actualType = $actualType.Trim() } else { continue # Si no se puede detectar el tipo, saltamos } if ($typeToExtension.ContainsKey($actualType)) { $expectedExt = $typeToExtension[$actualType] if ($expectedExt -ne $ext) { # Rutas de las subcarpetas $tmpDir = Join-Path $file.DirectoryName "tmp" $badDir = Join-Path $file.DirectoryName "original_bad_extension" # Crear las carpetas si no existen foreach ($dir in @($tmpDir, $badDir)) { if (-not (Test-Path $dir)) { New-Item -ItemType Directory -Path $dir | Out-Null } } # Crear copia corregida en carpeta tmp $newFileName = [System.IO.Path]::ChangeExtension($file.BaseName, $expectedExt) $destTmpFile = Join-Path $tmpDir $newFileName Copy-Item -Path $file.FullName -Destination $destTmpFile -Force Write-Host "✅ Copied: '$($file.Name)' -> 'tmp\$newFileName'" -ForegroundColor Green # Mover original a carpeta original_bad_extension $destBadFile = Join-Path $badDir $file.Name Move-Item -Path $file.FullName -Destination $destBadFile -Force Write-Host "📦 Moved original to: 'original_bad_extension\$($file.Name)'" -ForegroundColor Yellow $changed += $destTmpFile } } } Write-Host "`n📁 Procesados: $($files.Count) archivos en '$Folder'" if ($changed.Count -gt 0) { Write-Host "📌 Archivos corregidos copiados en 'tmp', originales movidos a 'original_bad_extension':" $changed | ForEach-Object { Write-Host " $_" } } else { Write-Host "✔️ No se detectaron inconsistencias." } }