¿Cómo puedo usar powershell y 7zip (7za.exe) para comprimir una carpeta mientras excluyo ciertos tipos de archivos?

Intenté esto:

cd "C:\path\to\folder to zip"
7za.exe a "C:\path\to\newZip.zip" -mx3 -x!*.txt -x!*.pdf

Pero eso vuelve:

.txt:  WARNING: The system cannot find the file specified.

.pdf:  WARNING: The system cannot find the file specified.

Y no comprime nada, solo crea un archivo ZIP vacío.

También he probado esto:

cd "C:\path\to\folder to zip"
Get-ChildItem "C:\path\to\folder to zip" -Recurse -Exclude *.txt, *.pdf | 7za.exe a -mx3 "C:\path\to\newZip.zip" $_.FullName

Pero eso comprime todo en la carpeta "C: \ ruta \ a \ carpeta para comprimir" en lugar de excluir nada ...

Gracias por cualquier ayuda que pueda brindar.

-Jim

1
user1161625 23 feb. 2012 a las 19:49

1 respuesta

La mejor respuesta

Tu segundo intento es casi correcto.

Su comando para llamar a 7-zip debe estar envuelto en un bloque para cada, de lo contrario, el $_.FullName se resuelve en una cadena vacía y 7-zip (en ausencia de los parámetros de entrada) comprime automáticamente todo en el directorio . Así que cámbielo a esto:

Get-ChildItem "C:\path\to\folder to zip" -Recurse -Exclude *.txt, *.pdf | %{7za.exe a -mx3 "C:\path\to\newZip.zip" $_.FullName}

Tenga en cuenta que % es un alias de foreach-object.

0
zdan 23 feb. 2012 a las 22:11
Gracias, intentaré esto :)
 – 
user1161625
24 feb. 2012 a las 01:37
¡Esto funcionó muy bien! De hecho, ni siquiera necesito ir al directorio que quiero comprimir ahora, eso me ahorra una línea de código :) Gracias
 – 
user1161625
24 feb. 2012 a las 01:42