2009-09-02 5 views
10

Sto creando un'utilità di backup che blocca tutti i file elencati in un file di testo. Sto usando MS ACCESS come mio front-end e 7-Zip per la compressione. Questi sono i comandi che sto usando:7-zip commandline

7zG.exe a c:\Backup\backup.zip 
@c:\temp\tmpFileList.txt 

Tutti i file sono compressi senza il loro percorso. C'è un modo per includere il percorso per ogni file nel file zip? Quindi, quando viene estratto backup.zip, i file verrebbero ripristinati nella loro struttura originale.

Grazie

+0

E se si riesce a incorporare percorsi nel file zip, utilizzare percorsi relativi o non sarà possibile ripristinarli da un'altra posizione tranne la posizione originale. – pavium

risposta

4

Il programma della riga di comando per 7-Zip è 7z o 7za. Ecco uno helpful post sulle opzioni disponibili. L'opzione -r (recurse) memorizza i percorsi.

+0

Grazie Vinay per la risposta .. Ma non riesco a trovare 7za.exe nella mia directory 7-zip, anche 7z.exe ha 0 byte. Ho usato 7zG.exe perché mostra una barra di avanzamento della GUI piuttosto che una schermata DOS.L'unico problema è che non include il percorso in cui si trova il file – Arnold

-1

Invece dell'opzione a utilizzare l'opzione x, ciò creerà le directory ma solo per l'estrazione, non per la compressione.

+2

Non rilevante; l'OP ha chiesto informazioni sulla memorizzazione dei percorsi nel file sulla compressione, non sulla decompressione. – Fred

6

In this 7-zip forum thread, in cui molte persone esprimono il desiderio di questa funzione, lo sviluppatore di 7-zip Igor punta al numero FAQ question intitolato "Come posso archiviare il percorso completo del file nell'archivio?" per ottenere un risultato simile.

In breve:

  • file separati in volume (una lista di file su C:\, uno per D:\, ecc)
  • quindi per la lista di ogni volume di file,
    1. chdir al directory principale del volume appropriato (ad esempio, cd /d C:\)
    2. creare un elenco file con percorsi relativo al volu directory principale me di (ad esempio, C:\Foo\Bar diventa Foo\Bar)
    3. eseguire 7z a archive.7z @filelist come prima con questa nuova lista di file
    4. quando si estraggono con percorsi completi, assicurarsi fare cd alla directory principale del volume appropriato prima
1

Non ho esaminato questo aspetto, ma sparando dal basso direi che hanno abbandonato il supporto della riga di comando nel portatile. La ragione per cui le persone non fanno molta roba da riga di comando nelle applicazioni portatili è che il sistema operativo (Windows nel tuo caso) richiede che gli eseguibili vengano aggiunti all'elenco di inclusione% path%.

Se questo requisito non viene soddisfatto utilizzando le utilità della riga di comando è piuttosto noioso.

7z -a .

sarebbe

d: \ portatile \ Z7 \ z7 -ac:. Archivio \ cartella \ a \ * *

Digitando che per tutto è il motivo per cui di GUI ha senso con le cose come applicazioni portatili (l'app) può ricordare la propria posizione e gestire quella roba per te e se non puoi eseguirla sai che non è allegata.

Se si desidera che l'app portatile contenga tale funzionalità, è comunque possibile installare la versione completa e estrarre il 7z.exe richiesto e inserirlo nella cartella portatile assicurandosi che sia inserito con la DLL richiesta.

Dovrai impostare il percorso quando colpisci il guscio dopo esserti assicurato che sia collegato.

http://www.redfernplace.com/software-projects/patheditor/ - un buon editor di percorsi (in basso) utile se si hanno molte informazioni sul percorso 20+ è difficile da leggere.

http://www.softpedia.com/get/System/System-Miscellaneous/Path-Editor.shtml - fonte alternet per editor di percorso

Non è consigliabile modificare il percorso di sistema per temproary unità "portatili", anche se manualy farlo da:

set path = percorso%%; "d: \ portatile \ Z7 \ ";

quando si esegue dos cmd.exe o http://sourceforge.net/p/conemu/home/Home/

Le altre risposte affrontano altri problemi meglio io non ho intenzione di provare ..

http://www.codejacked.com/zip-up-files-from-the-command-line/ - buon riferimento per l'utilizzo della riga di comando di Z7 e z7a .

PS: mi dispiace per il necro ma ho pensato che fosse necessaria una risposta più diretta al perché (anche se è solo speculativo).

0

Dal 7-zip versione 9.25 alpha c'è un nuovo interruttore -spf che può essere utilizzato per memorizzare i percorsi di file completo, compreso la lettera di unità per l'archivio.

7zG.exe a -spf c:\BAckup\backup.zip @c:\temp\tmpFileList.txt 

dovrebbe funzionare bene ora.

0

7-Zip richiede percorsi relativi nel file di elenco altrimenti memorizzerà solo i nomi di file, provocando un errore di nome file duplicato.

Supponendo che l'elenco contiene i nomi di percorso completo:

  • modificare il file di lista per rimuovere il prefisso unità, C: \
  • Assicurati di essere nella root del drive quando si esegue 7Z da usare il file di elenco sopra.
  • Quindi memorizzerà i percorsi e non si lamenterà del nome duplicato. Vuole percorsi relativi nel file di elenco.

Se il file di elenco ha percorsi relativi a un'altra cartella, è necessario eseguire 7Z da tale cartella.

Aggiornamento: ho notato da un altro post sopra che il nuovo 7-Zip ha un'opzione -spf che non richiede i passaggi precedenti. Non ancora testato, ma i miei passaggi sono per le versioni precedenti che non hanno questa opzione.