Como eu crio arquivos 7z separados de cada diretório selecionado com a linha de comando 7zip?

1
FOR %i IN (*.*) DO 7z.exe a "%~ni.7z" "%i"

Faz o trabalho para cada arquivo selecionado.

No entanto eu tenho toneladas de diretórios (com arquivos dentro deles, obviamente) eu preciso embalar.

Digamos que eu tenha d: \ dir1, d: \ dir2, d: \ dir3, d: \ dir4. Eu preciso do 7zip para compactá-los desta maneira:

e: \ dir1.7z, e: \ dir2.7z, e: \ dir3.7z, e: \ dir4.7z.

Como faço isso na linha de comando do 7zip?

    
por Grumpy ol' Bear 20.07.2011 / 09:54

2 respostas

2

No prompt de comando, você pode usar algo como:

FOR /D %i IN (d:\dir*.) DO 7z.exe a "e:\%~ni.7z" "%i"

Em um arquivo de lote, você precisa:

FOR /D %%i IN (d:\dir*.) DO 7z.exe a "e:\%%~ni.7z" "%%i"

BTW, você pode encontrar ajuda sobre o comando FOR digitando:

help for

no prompt de comando.

Observe que o 7-zip tem uma versão de linha de comando separada chamada 7za.exe que você provavelmente usaria em vez de 7z.exe . Está em um download de arquivo .zip separado, intitulado "Versão da Linha de Comando 7-Zip", que você pode encontrar no Página de download de zip .

    
por 20.07.2011 / 11:41
1

Se você tiver vários diretórios, o uso de curinga pode atingir alguns limites do sistema.

Com o Cygwin ou outras ferramentas do Unix para Windows UnxUtils , você pode usar o comando 'find' Unix da seguinte forma:

cd <source directory>
find . -mindepth 1 -maxdepth 1 -type d -exec 7za a /<destination directory>/{}.7z {} \;

O '-mindepth' é importante para evitar que o diretório atual seja retornado por 'find'

    
por 20.07.2011 / 10:51