Debajo de la carpeta images\
, tengo las siguientes carpetas:
Usa\
Italy\
Japan\
etc..
Quiero un script que cree un archivo .zip
para cada una de estas carpetas, así que tengo usa.zip
, italy.zip
, japan.zip
.
¿Cómo puedo hacer eso?
Respuesta1
Puedes usarwinrarpara esto.
Seleccione todas sus carpetas, haga clic derecho y seleccione Add to archive
. Ahora seleccione la opción Put each file to separate archive
debajo de la pestaña Files
:
Haga clic en Aceptar y listo. Si desea archivos .zip en lugar de .rar, simplemente seleccione ZIP
en la General
pestaña debajo de Archive format
.
Respuesta2
Supongo que esto es Windows, ya que estás usando barras invertidas.
Conseguir7za.exe(la versión de línea de comandos de7 cremalleras) y colóquelo en su %PATH%
.
Luego ejecute esto dentro de su Images\
directorio:
for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"
O en un script por lotes:
for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"
Respuesta3
Suponiendo que esté en Linux, podría usar un script Bash como este:
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
Este script tomará el primer argumento como carpeta, en este caso imágenes, y repetirá exactamente un nivel de profundidad para obtener todas sus carpetas (Estados Unidos, Italia y Japón) y comprimirlas en el mismo lugar.
No eliminará archivos zip antiguos ni las carpetas de origen. Zip es lo suficientemente inteligente como para detectar archivos zip existentes y actualizarlos cuando se vuelva a ejecutar. Sin embargo, si elimina un archivo en las carpetas de origenno lo haráeliminarse en los archivos zip. Puede evitar este comportamiento eliminando los archivos existentes de antemano.
Respuesta4
EsterespuestaporMvGfuncionó para mí en Ubuntu:
Puedes usar este bucle en
bash
:for i in */; do zip -r "${i%/}.zip" "$i"; done
i
es el nombre de la variable del bucle.*/
significa cada subdirectorio del directorio actual e incluirá una barra diagonal al final de esos nombres. Asegúrate de estarcd
en el lugar correcto antes de ejecutar esto."$i"
simplemente nombra ese directorio, incluida la barra diagonal final. Las comillas garantizan que los espacios en blanco en el nombre del directorio no causarán problemas.${i%/}
es similar$i
pero sin la barra diagonal final, por lo que puede usarla para construir el nombre del archivo zip.Si desea ver cómo funciona esto, incluya un
echo
antes dezip
y verá los comandos impresos en lugar de ejecutados.