Arquivo em lote para 7zipar todas as pastas em diretórios .7z (nenhuma subpasta deixada dentro!)

2

Me desculpe, isso provavelmente já foi feito inúmeras vezes, mas estou arrancando os cabelos tentando consertar o código do meu lote e não consigo encontrar uma resposta específica que eu possa usar para corrigir meu próprio código. Eu tenho um monte de pastas que eu quero lote "7z" em pastas .7z. Eu não quero uma pasta .7z com um diretório dentro, eu quero o conteúdo da pasta diretamente dentro do .7z. Até agora eu tenho:

for /d %%X in (*) do "c:\Program Files-Zipz.exe" a "%%X.7z" "%%X\"

Mas precisa de ajustes, pois ainda vejo subdiretórios quando olho dentro do 7z.

Muito obrigado !!!

    
por UnluckyForSome 25.06.2018 / 19:06

2 respostas

2

A única maneira que eu sei para impedir que o 7z inclua os pathes é comprimir a pasta atual.
Parece haver uma falha ao usar a opção -o para definir a pasta de saída um nível acima (ela cria o 7z, no entanto, na pasta atual). Uma solução é entrar em cada pasta para compactar e, em seguida, mover o arquivo 7z um nível acima:

:: Flat7z.cmd
@Echo off
for /d %%X in (*) do (
    echo processing folder "%%~fX"
    Pushd "%%~fX"
    "c:\Program Files-Zipz.exe" a "%%~nxX.7z" *
    Move "%%~nxX.7z" ..
    PopD
)

Árvore de amostra A: \ antes

> tree A:\ /F
A:\
└───test
    │   Flat7z.cmd
    ├───a
    │       File1.txt
    │       File2.txt
    └───b
            File3.txt
            File4.txt

e depois de executar o lote:

> tree A:\ /F
A:\
└───test
    │   a.7z
    │   b.7z
    │   Flat7z.cmd
    ├───a
    │       File1.txt
    │       File2.txt
    └───b
            File3.txt
            File4.txt

E (encurtado) 7z l *.7z output

Listing archive: a.7z
   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:39 ....A            6           16  File1.txt
2018-06-25 19:37:43 ....A            6               File2.txt
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:43                 12           16  2 files

Listing archive: b.7z

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:39 ....A            6           16  File3.txt
2018-06-25 19:37:43 ....A            6               File4.txt
------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:43                 12           16  2 files

------------------- ----- ------------ ------------  ------------------------
2018-06-25 19:37:43                 24           32  4 files

Archives: 2
Volumes: 2
Total archives size: 358
    
por 25.06.2018 / 20:29
-1

O que eu estava procurando:

for /D %%d in (*.*) do "C:\Program Files-Zipz.exe" a -tzip "%%d.zip" ".\%%d\*"
    
por 25.06.2018 / 20:59