Como posso criar um arquivo .zip para cada pasta dentro de outra pasta?

12

Sob a pasta images\ , tenho as seguintes pastas:

  • Usa\
  • Italy\
  • Japan\

etc.

Eu quero um script que crie um .zip para cada uma dessas pastas, então eu tenho usa.zip , italy.zip , japan.zip .

Como posso fazer isso?

    
por Juan Claude 31.07.2011 / 10:07

3 respostas

8

Suponho que isso é o Windows, já que você está usando barras invertidas.

Obtenha o 7za.exe (a versão da linha de comando de 7-zip ) e coloque em seu %PATH% .

Em seguida, execute isso no diretório Images\ :

for /f "tokens=* usebackq" %G in ('dir /b /a:d "%cd%"') do 7za a -r -tzip "%~G.zip" "%~G"

Ou em um script em lote:

for /f "tokens=* usebackq" %%G in ('dir /b /a:d "%cd%"') do 7za a -r -tzip "%%~G.zip" "%%~G"
    
por 31.07.2011 / 11:24
6

Você pode usar o Winrar para isso.

Selecione todas as suas pastas, clique com o botão direito e selecione Add to archive . Agora selecione a opção Put each file to separate archive na aba Files :

Clique em OK e pronto. Se você quiser arquivos .zip em vez de .rar, basta selecionar ZIP na guia General em Archive format .

    
por 31.07.2011 / 12:49
5

Supondo que você esteja no Linux, você pode usar um 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 terá o primeiro argumento como pasta, neste caso imagens, e recapitulará exatamente um nível de profundidade para obter todas as suas pastas (EUA, Itália e Japão) e zipá-las no mesmo lugar.

Ele não excluirá arquivos zip antigos nem as pastas de origem. O Zip é inteligente o suficiente para detectar arquivos zip existentes e atualizá-los quando executado novamente. No entanto, se você excluir um arquivo nas pastas de origem, ele não será excluído dos arquivos zip. Você pode contornar esse comportamento excluindo os arquivos existentes de antemão.

    
por 31.07.2011 / 14:13

Tags