Compacta várias pastas indevidamente, automaticamente

0

Tenho pastas cheias de fotos em pastas de categorias

por exemplo

  • feriados
    • espanha
    • frança
    • itália
  • família
    • filho
    • daugher
  • natal
    • 2010
    • 2011

... exceto por muito mais tempo ... existem cerca de 100 pastas.

Eu preciso compactar cada subpasta (por exemplo, espanha, frança, itália, filho, filha, etc.) individualmente; de modo que, para a pasta de categoria de feriados, por exemplo, eu acabaria com:

  • feriados
    • espanha
    • spain.zip
    • frança
    • france.zip
    • itália
    • italy.zip

... e assim por diante. (ou usando arquivos rar)

Eu quero evitar fazer isso manualmente, se possível, e acho que é possível a partir da linha de comando usando o WinRar, (embora eu pudesse usar outra coisa, se fosse melhor). Alguém poderia me dar (e explicar brevemente para mim) o código que eu usaria e como usá-lo. Eu sei um pouco sobre a linha de comando, mas tenho uma experiência bastante limitada.

Estou usando o Windows 7

    
por byronyasgur 21.05.2012 / 17:31

5 respostas

0

Eu achei que seria melhor responder a minha própria pergunta e aceitar que, apesar das respostas úteis, (dando descontos para todos em vez de escolher uma resposta) ... para que os futuros visitantes recebessem uma resposta concisa. Isso porque acabei obtendo meu resultado de uma combinação das quatro respostas, então aqui estava a solução testada com a qual acabei.

Eu mudei para 7zip (baixando a versão da linha de comando e colocando-a na minha pasta de usuário ) porque parece ter melhor documentação na operação da linha de comando do que o Winrar.

Em seguida, criei um arquivo em lote, que executei na pasta cujas subpastas eu desejava compactar; e colocar nele o seguinte comando que eu tirei das outras respostas:

for /d %%i in (*.*) do "c:\users\userza" a -tzip "c:\path\to\output\folder\%%i.zip" "%%i"

(Meu nome de usuário é 'usuário', portanto, isso seria ajustado de acordo com o nome de usuário do Windows 7 de uma pessoa)

Eu testei o comando removendo vários aspectos, por exemplo, o / deo -tzip e não achei que funcionasse, a menos que estivesse tudo pronto.

Também achei que este é um bom recurso link

NB Eu não estava preocupado com a profundidade da pasta e no meu caso todas as sub-pastas são apenas um nível abaixo das pastas de nível superior. Além disso, essas pastas contêm apenas arquivos, não mais pastas. Duvido que o código acima funcione para pastas contidas em pastas, mas tenho certeza de que poderia ser facilmente adaptado.

    
por 22.05.2012 / 02:01
1

Eu não acho que isso será fácil usando um arquivo em lote, mas deve ser possível.

Lote permite que você faça uma iteração por meio de diretórios usando um loop for assim:

for /d %%X in (directorySet) do ( command )

/ d é necessário para especificar que você estará circulando por diretórios | %% X é um diretório na lista
comando é o que executar como 'echo "olá"'

Fonte: link

Isso é tudo que eu realmente sei que pode ajudá-lo, o que você usa no lugar do comando é muito dependente do programa que você está usando.

Seria mais fácil em Powershell, pois tem mais notação bash e é muito mais flexível, mas usar lote é completamente bom.

Desculpe por toda a ajuda que eu poderia dar, eu tenho conhecimento mínimo de lote ...

    
por 21.05.2012 / 17:42
1

No DOS, mude para a pasta pai que tem suas 100+ pastas, então execute um comando "para", assim:

for %v in (*.*) do pkzip %v.zip %v

Substitua o pkzip pela sua ferramenta zip / archive da linha de comando. O segundo e terceiro "% v" expandem para os nomes das pastas.

    
por 21.05.2012 / 17:44
1

Eu não tenho um sistema Windows para preparar seu comando,
Mas aqui está uma lista aproximada de coisas,

  • você usaria o comando dir em um for loop (ou, talvez você precise de uma página de manual mais recente)
  • limite a listagem dir aos diretórios depth = 1
    • /A:D Folder switch (?)
    • alguma forma de não recursar ou usar profundidade == 1 (esqueci dos arquivos em lote do Windows agora)
  • Verifique 7z também
  • Se você costuma acessar o script do Windows, verifique o PowerShell
por 21.05.2012 / 17:42
1

Confira minha resposta para a pergunta SU similar intitulada "Como criar arquivos 7z separados de cada diretório selecionado com a linha de comando 7zip? ". Ele pode ser facilmente adaptado para usar uma ferramenta de arquivo / zip de linha de comando diferente, basta alterar a peça após o DO na instrução.

Eu pessoalmente prefiro o 7-Zip sobre o WinRAR e o par de outros utilitários de compressão que eu tentei. É poderoso, rápido e gratuito. Note que é improvável que seus arquivos de imagem possam ser compactados muito, já que pela natureza de seu formato eles geralmente já são compactados com sofisticados algoritmos orientados a imagem que geralmente são melhores do que qualquer genérico usado em um utilitário de compressão - embora As reivindicações do programa não-livres WinZip podem reduzir ainda mais os arquivos de imagem JPEG em 20 a 25%.

    
por 21.05.2012 / 20:50