Aqui está um script para realizar isso (omitir os comentários "//", que são mostrados para explicação):
@echo off
for /D %%G IN (*) DO (
//This is my path to 7-Zip, it could be different for you
cd c:\program files-zip
//This is the dir of the parent folder in which you want the subfolders to be zipped individually.
7z a -t7z c:\users\user\desktop\folder\%%G.7z c:\users\user\desktop\folder\%%G -r )
pause
-t7z é o formato de arquivo .7z usado.
Para usar o script:
A forma como o script é escrito pressupõe que você tenha uma pasta pai com subdiretório que deseja compactar individualmente (cada sub-diretório em seu próprio arquivo zip).
Representação visual:
----Parent Directory
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
--------Sub Directory (to be zipped)
As pessoas dizem que os subdiretórios que você deseja zip estão localizados em C:\Users\Foo\Documents
. Então, seria parecido com:
----C:\Users\Foo\Documents
--------Foo1
--------Foo2
--------Foo3
--------Foo4
--------Foo5
Então, no script que eu forneci, você editaria a linha:
7z a -t7z c:\users\user\desktop\folder\%%G.7z c:\users\user\desktop\folder\%%G -r )
para dizer:
7z a -t7z c:\Users\Foo\Documents\%%G.7z c:\Users\Foo\Documents\%%G -r )
Portanto, agora temos que definir o local do 7z.exe para que o script seja executado corretamente.
Observação: você não precisará fazer isso se você conseguir definir a variável de ambiente para 7z.exe. Para quem tiver sucesso, omita a linha cd c:\program files-zip
. Para testar se funcionou ou não, simplesmente abra cmd.exe
e digite 7z
, se você receber uma lista de opções e parâmetros, então funcionou e, se não, continue com o comando cd
.
Encontre onde você instalou o 7-Zip e copie o diretório e adicione-o após o cd
. No exemplo, ele será instalado em C:\Program Files-Zip
. Então, o script final ficará assim:
@echo off
for /D %%G IN (*) DO (
cd C:\Program Files-Zip
7z a -t7z c:\Users\Foo\Documents\%%G.7z c:\Users\Foo\Documents\%%G -r )
pause
agora salve o script como uma extensão de arquivo .bat
; se estiver usando o bloco de notas, você deve alterar Save as Type
para All Files (".")
.
Se escrito corretamente, o resultado final deve ficar assim:
OBSERVAÇÃO:Sevocêtiverpastasquetenhamespaços,nãoproduziráonomeinteiro,masaprimeirapalavraantesdoespaço.Ex:Foo1
seráarquivadocomoFoo.7z
(nobueno).MesmacoisacommaisdeumapastacomaprimeirapalavracomoFoo
eFoo1
,ambascorremparaoúltimoproblemaqueeuexpliqueiequandoFoo
éarquivadopelaprimeiravez,oarquivoparaFoo1
tentarásobrescreverFoo
porqueelestêmomesmonome.Sevocêpuderencontrarumtrabalhoemtornodisso,parabénsparavocê!
VocêtambémpodequerertestaraversãodeTylerdomeuscript,éclaro,eleémais"universalmente compatível" e envolve ter 7z.exe
como E.V. (Variável Ambiental).