7-zip - como usar a linha de comando para incluir / excluir uma lista grande de arquivos

7

Estou (tentando) desenvolver um programa para operar o programa 7-zip console (7z.exe) via ShellExecute () e passar para ele uma lista de arquivos gerada por computador.

Agora, o que eu quero fazer é isto:

Eu quero passar uma linha de comando dizendo para incluir e excluir arquivos: ou seja,

include these :
c:\path\path2\path
c:\path\path2\path__\
.... more files

exclude these :
c:\path\path2\path\data\files\foo\bar\fish.dat
c:\path\path2\path__\data\slug.mp3
.... more files

então eu faço uma linha de comando assim:

7z a -t7z -i!"...file to include" -x!"file to exclude" ... etc etc

Estou apenas repetindo da memória, então sei que a linha de comando pode não ser precisa

Mas o que eu entro não funciona. Eu só entendo tudo no caminho e caminho. O que eu quero é um arquivo que fique assim dentro:

.\
path\
     data\
          files\
                foo\
                    bar\
                        <everything in path\data\files\foo\bar except for foo.dat>
path__\
       data\
            <everything in path__\data\ except for slug.mp3>

Poderia ter alguma ajuda para obter esse resultado? Obrigado

    
por zsteve 12.10.2013 / 10:28

1 resposta

7

Sem saber exatamente qual é o comando 7z , é só adivinhar, mas aqui está:

7z a -t7z -ir@"files_to_include.txt" -xr@"files_to_exclude.txt" ....

Observe o r após -i e -x para recursivo. Você provavelmente também usou @ antes do nome do arquivo em vez do ! . (ou pelo menos você deve. ! é usado para especificar curinga na linha de comando:)

Depois, para o seu conteúdo files_to_exclude.txt . Acredito que você deve usar os caminhos relativos aqui. Portanto, não especifique o c:\.... antes dos seus caminhos. Se seus caminhos comuns na inclusão forem c:\path\path2 , você precisará excluir isso da exclusão. A razão para isso é que, enquanto 7z está compactando seus arquivos, ele já acabou com o c:\path\path2 -part (porque nem todo o caminho é armazenado, apenas a parte relativa). Então suas exclusões não combinam mais. Você pode ver isso porque ao abrir o .zip c:\path\path2 não está no .zip. (Então, combinando isso não funciona)

Então, o seu files_to_exclude.txt deve ficar assim:

path\data\files\foo\bar\fish.dat
path__\data\slug.mp3
.... more files

Portanto, se depois de adicionar r após -i e -x e alterar o novo files_to_exclude.txt você ainda tiver problemas, precisaremos ver seu comando real.

    
por 13.10.2013 / 13:20