Ok, imaginate esto: tenés una colección de cómics en formato .cbr, pero querés pasar todo a .cbz para leerlos más cómodo en ciertas apps. Acá entra este script. Te lo explico paso a paso, tranqui que no es tan quilombo como parece.


CONVERSOR DE CBR A CBZ

Este script agarra tus archivos .cbr, los convierte a .cbz y los deja bien prolijos. Ahí va lo que hace en cada paso:

1. Renombrar de .cbr a .rar

Primero, convierte cada archivo .cbr en .rar. ¿Por qué? Porque un .cbr es básicamente un .rar disfrazado. Entonces, renombrando la extensión, ya estamos a un paso de descomprimir.

Get-ChildItem *.cbr | Rename-Item -NewName { $_.Name -ireplace [regex]::Escape('.cbr'), '.rar'}

2. Setear el Alias de 7-Zip

Este paso se asegura de que tenés el programa 7-Zip (el que usamos para comprimir y descomprimir). Si no lo tenés, tira un error. Después, crea un alias (sz) para usar 7-Zip de manera más rápida en los siguientes pasos.

if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"} 
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"

3. Descomprimir los .rar

Ahora que tenemos los .rar, los descomprimimos. Acá, el alias sz ejecuta 7-Zip, que extrae el contenido de cada .rar.

Get-ChildItem *.rar | Foreach-object {sz e $_.Name -y -o*} -Verbose

4. Limpiar Archivos Innecesarios

Cuando descomprimís, a veces se generan archivos molestos (.DS_Store, Thumbs.db o .txt). Esta parte borra todo eso para mantener las carpetas limpias.

Get-ChildItem -Recurse ._.DS_Store,*.txt,.*,Thumbs.db | Foreach-object { Remove-Item -Path $_.FullName -Force } -verbose

5. Eliminar Carpetas Vacías

A veces se quedan carpetas vacías después de limpiar. Este bloque se encarga de eso, chequeando cada carpeta y borrando las que ya no tienen nada adentro.

Get-ChildItem -Path $path -Recurse | Where-Object {(Get-ChildItem $_.FullName).Count -eq 0} | Foreach-object {Remove-item -Recurse -path $_.FullName -Force } -verbose

6. Comprimir Carpetas a .zip

Ya tenemos todo listo para armar los .cbz. Primero, comprime las carpetas en .zip usando 7-Zip.

Get-ChildItem -exclude *.rar | Foreach-object {sz a -tzip $_.Name $_.Name} -verbose

7. Renombrar los .zip a .cbz

El script renombra cada archivo .zip resultante a .cbz. ¡Ya casi estamos!

Get-ChildItem *.zip | Rename-Item -NewName { $_.Name.Replace('.zip','.cbz') } -verbose

8. Limpiar las Carpetas Comprimidas y Archivos .rar

Para no dejar rastros, borra las carpetas originales que se comprimieron y los archivos .rar que ya no sirven.

Get-ChildItem | Where-Object {$_.PSIsContainer -eq $True} | Foreach-object {Remove-item -Recurse -path $_.FullName -Force } -verbose
Get-ChildItem *.rar | Foreach-object { Remove-Item -Path $_.FullName } -verbose

Y listo, ¡tenés todos tus cómics en .cbz, organizados y sin basura extra!