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

Creare un archivio da una directory senza che il nome della directory sia aggiunto all'archivio

Ho la seguente struttura di cartelle:

  • root
  • folder1
  • folder2
  • folder3
  • 7za.exe

Voglio eseguire lo strumento a riga di comando 7-zip per comprimere tutti i file in folder1 in un file zip chiamato folder1.zip.

Eseguendo il seguente

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

produce un file zip come previsto. Tuttavia, quando apro il file zip, c'è una cartella chiamata folder1, e dentro ci sono tutti i file che erano dentro quella cartella. Non voglio che il nome della cartella sia aggiunto alla cartella zip, cioè vorrei aggiungere tutti i file in un formato “Flat”.

Inoltre non voglio eseguire ricorsivamente lo strumento della riga di comando per ogni singolo file/cartella.

C'è un interruttore che fornisce questa funzionalità?

Risposte (4)

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

Dal file 7-Zip Help :

a (Add) command

Aggiunge file all'archivio.

Esempi

`7z a archive1.zip subdirDal file [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Aggiunge file all'archivio.

Esempi

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive1.zip. I nomi dei file nell'archivio conterranno il prefisso subdir.

7z a archive2.zip .\subdir\*

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive2.zip. I nomi dei file nell'archivio non conterranno il prefisso subdir.

`cd /D c:\dir1Dal file [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Aggiunge file all'archivio.

Esempi

`7z a archive1.zip subdirDal file [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Aggiunge file all'archivio.

Esempi

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive1.zip. I nomi dei file nell'archivio conterranno il prefisso subdir.

7z a archive2.zip .\subdir\*

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive2.zip. I nomi dei file nell'archivio non conterranno il prefisso subdir.

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

[ a (Add) command ]0x3&

Aggiunge file all'archivio.

Esempi

`7z a archive1.zip subdirDal file [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Aggiunge file all'archivio.

Esempi

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive1.zip. I nomi dei file nell'archivio conterranno il prefisso subdir.

7z a archive2.zip .\subdir\*

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive2.zip. I nomi dei file nell'archivio non conterranno il prefisso subdir.

`cd /D c:\dir1Dal file [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Aggiunge file all'archivio.

Esempi

`7z a archive1.zip subdirDal file [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Aggiunge file all'archivio.

Esempi

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive1.zip. I nomi dei file nell'archivio conterranno il prefisso subdir.

7z a archive2.zip .\subdir\*

aggiunge tutti i file e le sottocartelle dalla cartella subdir all'archivio archive2.zip. I nomi dei file nell'archivio non conterranno il prefisso subdir.

I nomi dei file nell'archivio c:\archivio3.zip conterranno il prefisso dir2\dir3\, ma non conterranno il prefisso c:\dir1.

Quindi il comando che vorresti sarebbe: 7za.exe a folder1.zip .\folder1\*

Inoltre, fai attenzione alla gestione dei caratteri jolly da parte di 7-Zip. Non tratta *.* come “tutti i file” – significa “tutti i file con un punto nel nome del file”. I file senza estensione verranno persi. Se vuoi davvero tutti i file, usa semplicemente * invece.

Infine, il parametro -tzip non è necessario se il nome del file dell'archivio finisce in .zip. 7-Zip è abbastanza intelligente da capire quale formato vuoi in questi casi. È richiesto solo quando vuoi un'estensione personalizzata (ad esempio 7za.exe a -tzip foo.xpi <files> per un add-on di Mozilla).

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

Questo ha funzionato per me

Considera la struttura delle cartelle come C:\Parent\SubFolders….. E vuoi creare parent.zip che conterrà tutti i file e le cartelle C:\Parent senza la cartella padre [cioè inizierà da SubFolders…..]

cd /D "C:\Parent"

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

Questo creerà Parent.zip in C:\Parent

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

Solo per espandere la risposta accettata (non sono stato in grado di aggiungere commenti):

Su Linux l'aggiunta di ‘*’ non ha funzionato per me, così ho finito per inventare una linea di comando più verbosa che ha dato il risultato desiderato:

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

===========

spiegazione dello script:

  • salva il percorso della cartella corrente per usarlo in seguito;
  • naviga verso la cartella che deve essere archiviata;
  • crea l'archivio (notare il ‘.’ (punto) alla fine);
  • torna alla cartella originale;
  • si libera della variabile che memorizzava il percorso della cartella originale

Spero che possa essere utile a qualcuno.

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

Che ne dici di questo. es. Cartella/sottocartella1, Cartella/sottocartella2

seleziona tutte le sottocartelle > clicca con il tasto destro e crea archivio > seleziona qualsiasi formato

* Il nome dell'archivio sarebbe la cartella madre…

Semplice giusto?