Como posso compactar vários arquivos em três arquivos por arquivo com 7-Zip?

2

Eu tenho 100 arquivos com esta aparência:

001.txt
002.txt
003.txt
004.txt
.....
100.txt

Eu quero compactá-los assim:

001.txt
002.txt ----> archive01.7z
003.txt
---------
004.txt
005.txt ----> archive02.7z
006.txt

Como posso conseguir isso usando o 7-Zip?

    
por WTFIsGoingOn 20.09.2011 / 07:24

1 resposta

2

Bem, isso depende .... Se você estiver executando o Linux ou um shell semelhante ao Linux (por exemplo, cygwin) no Windows, é um programa simples para escrever no bash ou na sua linguagem favorita, como python ou perl.

Aqui estão alguns (untested;)) pseudo código (um pouco perto do bash, mas sem muita sintaxe extra necessária).

I=0  ##File counter
J=1  ##Archive counter
## the following while strategy will work in most languages as long as you don't 
## have thousands of files - if you do, read them in 1 at a time in the loop

while FILE in <list-of-files-to zip>  ## Loop across all files like *.txt
do
  if I mod 3 == 0  ## If we're at the start of a new archive
  then
    COMMAND="7z -a archive"J".7z " FILE " "  ##Start a new command line for archive "J"
    J++
  else
    COMMAND=COMMAND FILE   ##append the next file name to the command string
    if I mod 3 == 2        ## if the desired number of files are appended 
    then
      append COMMAND string to a script file to run later
      or run it directly right here
      COMMAND=""            ## clear the COMMAND string
    fi
  fi
  I++
done

## Handle left over files
I--   ## Loop increments I after last file
if I mod 3 != 2
then
  append COMMAND string to a script file to run later
  or run it directly right here
fi

Você pode alterar o "3" para uma variável (SIZE) para criar arquivos com um número diferente de arquivos. Se você fizer, então o "2" se torna SIZE-1.

HTH

    
por 28.09.2011 / 08:12