2011-09-26 16:51:38 +0000 2011-09-26 16:51:38 +0000
86
86

Criação de um arquivo a partir de um directório sem que o nome do directório seja adicionado ao arquivo

Tenho a seguinte estrutura de pastas:

  • raiz
  • pasta1
  • pasta2
  • pasta3
  • 7za.exe

Quero executar a ferramenta de linha de comando 7-zip para comprimir todos os ficheiros em folder1 para um ficheiro zip chamado folder1.zip.

Executando o seguinte

7za.exe a -tzip folder1.zip folder1\*.*

produz um ficheiro zip como esperado. No entanto, quando abro o ficheiro zip, este tem uma pasta chamada folder1, e no seu interior tenho todos os ficheiros que estavam dentro dessa pasta. Não quero que o nome da pasta seja adicionado à pasta zip, ou seja, gostaria de adicionar todos os ficheiros num formato de ficheiro “Flat”.

Também não quero executar recursivamente a ferramenta de linha de comando para cada ficheiro/pasta individual.

Existe algum interruptor que forneça esta funcionalidade?

Respostas (4)

141
141
141
2011-09-26 17:25:54 +0000

Do ficheiro 7-Zip Help :

a (Adicionar) comando

Adiciona ficheiros ao arquivo.

& > Exemplos & > `7z a archive1.zip subdirDo ficheiro [ 7-Zip Help ]0x3&:

[ a (Adicionar) comando ]0x3&

Adiciona ficheiros ao arquivo.

& > Exemplos & >

adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo1.zip. Os nomes dos ficheiros em arquivo conterão o prefixo subdir.

& > 7z a archive2.zip .\subdir\* & > adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo2.zip. Os nomes dos ficheiros em arquivo não conterão o prefixo do subdir.

& > `cd /D c:\dir1Do ficheiro [ 7-Zip Help ]0x3&:

[ a (Adicionar) comando ]0x3&

Adiciona ficheiros ao arquivo.

& > Exemplos & > `7z a archive1.zip subdirDo ficheiro [ 7-Zip Help ]0x3&:

[ a (Adicionar) comando ]0x3&

Adiciona ficheiros ao arquivo.

& > Exemplos & >

adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo1.zip. Os nomes dos ficheiros em arquivo conterão o prefixo subdir.

& > 7z a archive2.zip .\subdir\* & > adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo2.zip. Os nomes dos ficheiros em arquivo não conterão o prefixo do subdir.

& >

`7z a c:\archive3.zip dir2\dir3Do ficheiro [ 7-Zip Help ]0x3&:

[ a (Adicionar) comando ]0x3&

Adiciona ficheiros ao arquivo.

& > Exemplos & > `7z a archive1.zip subdirDo ficheiro [ 7-Zip Help ]0x3&:

[ a (Adicionar) comando ]0x3&

Adiciona ficheiros ao arquivo.

& > Exemplos & >

adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo1.zip. Os nomes dos ficheiros em arquivo conterão o prefixo subdir.

& > 7z a archive2.zip .\subdir\* & > adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo2.zip. Os nomes dos ficheiros em arquivo não conterão o prefixo do subdir.

& > `cd /D c:\dir1Do ficheiro [ 7-Zip Help ]0x3&:

[ a (Adicionar) comando ]0x3&

Adiciona ficheiros ao arquivo.

& > Exemplos & > `7z a archive1.zip subdirDo ficheiro [ 7-Zip Help ]0x3&:

[ a (Adicionar) comando ]0x3&

Adiciona ficheiros ao arquivo.

& > Exemplos & >

adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo1.zip. Os nomes dos ficheiros em arquivo conterão o prefixo subdir.

& > 7z a archive2.zip .\subdir\* & > adiciona todos os ficheiros e subpastas do subdir de pastas ao arquivo2.zip. Os nomes dos ficheiros em arquivo não conterão o prefixo do subdir.

& >

Os nomes dos ficheiros em arquivo c:\archive3.zip conterão o prefixo dir2\dir3, mas não conterão o prefixo c:\dir1{.

Portanto, o comando que desejaria seria: 7za.exe a folder1.zip .\folder1\*

Também, preste atenção à manipulação de wildcards pelo 7-Zip. Não trata *.* como “todos os ficheiros” – significa “todos os ficheiros com um ponto final no nome do ficheiro”. Ficheiros sem extensão serão perdidos. Se realmente quiser todos os ficheiros, basta usar * em vez disso.

Finalmente, o parâmetro -tzip não é necessário se o nome de ficheiro do arquivo terminar em .zip. O 7-Zip é suficientemente inteligente para descobrir qual o formato que se pretende nesses casos. Só é necessário quando se pretende uma extensão personalizada (por exemplo, 7za.exe a -tzip foo.xpi <files> para um Add-on Mozilla).

2
2
2
2016-06-07 18:04:40 +0000

Isto funcionou para mim

Considere a estrutura de pastas como C:\Parent\SubFolders….. E pretende criar parent.zip que conterá todos os ficheiros e pastas C:\Parent sem a pasta parent [ou seja, começará por SubFolders…..]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

Isto criará Parent.zip em C:\Parent

1
1
1
2018-07-17 10:49:04 +0000

Apenas para expandir a resposta aceite (não consegui acrescentar comentários):

No Linux acrescentar ‘*’ não funcionou para mim, por isso acabei por inventar mais linha de comando verbosa que deu o resultado desejado:

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

explicação de script:

  • guardar o caminho do dir actual para usar mais tarde;
  • navegar para directório que precisa de ser arquivado;
  • criar arquivo (aviso ‘.’ (ponto) no fim);
  • voltar ao dir original; & - livrar-se da variável que guardou o caminho do dir original

Espero que possa ser útil para alguém.

-1
-1
-1
2017-03-17 05:23:32 +0000

Que tal isto, por exemplo, Folder/subFolder1, Folder/subfolder2

seleccionar todas as subpasta > clicar com o botão direito do rato e depois criar arquivo > seleccionar qualquer formato

*O nome do arquivo seria a pasta principal…

Simples direito?