Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
archiviare più cartelle assieme
Nuovo argomento   Rispondi    Indice del forum -> Software - generale
Precedente :: Successivo  
Autore Messaggio
uomodeighiacci
Dio minore
Dio minore


Registrato: 01/01/09 20:29
Messaggi: 769

MessaggioInviato: 23 Nov 2009 21:52    Oggetto: archiviare più cartelle assieme Rispondi citando

ho una cartella contenente molte sottocartelle. ho la necessità di creare un archivio (rar zip o altro) del contenuto di ogni sottocartella.
Per essere più chiaro diciamo che la cartella A contiene le cartelle B e C, io archivio B e C e le cancello. Ora la cartella A contiene 2 archivi di nome B.zip e C.zip
Io ho molte più di 2 sottocartelle ed archiviarle una per una è lunga.. esiste un modo per farlo in blocco?
Top
Profilo Invia messaggio privato
uomodeighiacci
Dio minore
Dio minore


Registrato: 01/01/09 20:29
Messaggi: 769

MessaggioInviato: 21 Dic 2009 13:01    Oggetto: Rispondi citando

nessuna buona nuova? Sad
Top
Profilo Invia messaggio privato
skan
Eroe
Eroe


Registrato: 14/12/09 13:34
Messaggi: 61

MessaggioInviato: 21 Dic 2009 13:50    Oggetto: Rispondi citando

utilizza qualcosa da linea di comando e fatti un bat...c'è la sintassi FOR per scorrerti tutta la directory di primo livello e poi con un 7Zip (che accetta anche argomenti da linea di comando), sono arrugginito, ma immagino che se cerchi nella guida con un
Codice:

Dir /AD /B > listadir.txt


ti metti la lista di tutti le subdirectory a partire da dove lanci il comando.

poi con un for

Codice:

for /F "usebackq delims==" %i IN (listadir.txt) DO @echo NOME CARTELLA: %i


@echo NOME CARTELLA: %i è un test che ho fatto ora per verificare se il comando era corretto. in questo caso non mi fa altro che fare un elenco
NOME CARTELLA: PRIMA DIRECTORY
NOME CARTELLA: SECONDA DIRECTORY
etc etc..
NOME CARTELLA: ULTIMA DIRECTORY

quindi il comando funziona, tu al posto del @echo devi trovare un comando per zippare le subdirectory, 7zip lo fa cosi'

7z a nomearchivio.zip percorso

dove a è il parametro per aggiungere (add), immagino che un comando del genere possa funzionare:

Codice:

for /F "usebackq delims==" %i IN (listadir.txt) DO 7z a archive_%i.zip PERCORSOTUADIR\%i\*


ma non l'ho testato, e se ti ci butti a testare occhio, comunque a sbatterci le corne via Batch la procedura la sistemi.

poi puoi dare il comando rdir %i in un ulteriore loop eventualmente per parametrizzare anche la cancellazione ma assicurati sempre che lo script non compia errori, perchè fai in un attimo a perdere dati via batch.


P.s quando lo metti in un file .bat aggiungi un % in più ad ogni variabile es.
for /F "usebackq delims==" %%i IN (listadir.txt) DO @echo NOME CARTELLA: %%i
Top
Profilo Invia messaggio privato
uomodeighiacci
Dio minore
Dio minore


Registrato: 01/01/09 20:29
Messaggi: 769

MessaggioInviato: 21 Dic 2009 16:58    Oggetto: Rispondi citando

ciao
Grazie di aver risposto, purtroppo di cmd e bat ne so quanto basta solo per fare qualche "scherzone"..
Se si potesse rendere più semplice o se potessi farlo tramite un programma sarebbe meglio (se invece hai voglia di darmi la "pappa pronta" non mi lamento.. Wink )
Top
Profilo Invia messaggio privato
skan
Eroe
Eroe


Registrato: 14/12/09 13:34
Messaggi: 61

MessaggioInviato: 21 Dic 2009 17:50    Oggetto: Rispondi citando

uomodeighiacci ha scritto:
ciao
Grazie di aver risposto, purtroppo di cmd e bat ne so quanto basta solo per fare qualche "scherzone"..
Se si potesse rendere più semplice o se potessi farlo tramite un programma sarebbe meglio (se invece hai voglia di darmi la "pappa pronta" non mi lamento.. Wink )


guarda, ho pensato che tutto sommato farebbe comodo pure a me, ho fatto delle prove, e mi sembra che funzioni, provalo prima su un percorso con dei "file sacrificabili" Laughing

l'ho chiamato archive.bat, apri un notepad e poi salvalo con quel nome e mettilo sulla root dove avrai le sottocartelle da zippare:

Codice:

Dir /AD /B > listadir.txt

for /F "usebackq TOKENS=1* delims=;" %%i IN (listadir.txt) DO 7z a "%%i.zip" "%%i\*"

for /F "usebackq TOKENS=1* delims=;" %%i IN (listadir.txt) DO RMDIR /S /Q "%%i"

del listadir.txt


spiegazione:


  1. DIR /AD /B > listadir.txt
    crea un file temporaneo dove elenca solo le cartelle (/AD) una per riga e solo il nome senza percorso o attributi /B

  2. for /F "usebackq TOKENS=1* delims=;" %%i IN (listadir.txt) DO 7z a "%%i.zip" "%%i\*"

    scorre il file riga per riga e crea un file che si chiama uguale alla cartella e comprime tutto quello che sta all'interno della sua cartella

  3. for /F "usebackq TOKENS=1* delims=;" %%i IN (listadir.txt) DO RMDIR /S /Q "%%i"

    QUESTA RIGA LA PUOI TOGLIERE PER I TEST O SE NON VUOI CANCELLARE LE CARTELLE DOPO, riscorre tutto l'elenco e cancella la directory e (/S) l'eventuali sottodirectory sopprimento il messaggio di conferma (/Q)

  4. del listadir.txt
    finito il lavoro rimuove il file temporaneo.


Ripeto, testalo prima su una cartella di test, buttaci 2 cartelle piene di file di prova e poi lancia il comando, non mi assumo responsabilità di errore di cancellazione, per essere ancora più sicuro, togli la riga della rimozione delle cartelle

Ah, dimenticavo, assicurati di avere 7Zip installato e non standalone, se ce l'hai standalone aggiungi nel PATH, la directory che ospita 7z.exe

P.s credo funzioni anche con "delims=", il ; tanto non lo troverà mai, ma dato che mi funge ho lasciato cosi'
Top
Profilo Invia messaggio privato
uomodeighiacci
Dio minore
Dio minore


Registrato: 01/01/09 20:29
Messaggi: 769

MessaggioInviato: 21 Dic 2009 22:57    Oggetto: Rispondi citando

funziona!
thank you very grazie Very Happy
Non andava ma è bastato inserire la directory di 7z.exe come dicevi tu.
Sai se è possibile cambiare il livello di compressione? Mi servirebbe minimo o senza compressione
Top
Profilo Invia messaggio privato
skan
Eroe
Eroe


Registrato: 14/12/09 13:34
Messaggi: 61

MessaggioInviato: 21 Dic 2009 23:50    Oggetto: Rispondi citando

uomodeighiacci ha scritto:
funziona!
thank you very grazie Very Happy
Non andava ma è bastato inserire la directory di 7z.exe come dicevi tu.
Sai se è possibile cambiare il livello di compressione? Mi servirebbe minimo o senza compressione


nella guida di 7Zip (F1) i parametri da linea di comando c'è il parametro -m per passargli il livello di compressione (x), 0 è la copia solo senza compressione, per usare la compressione bisogna specificare il tipo -t, in questo caso -tzip).

Non l'ho testata:

for /F "usebackq TOKENS=1* delims=;" %%i IN (listadir.txt) DO 7z a -tzip "%%i.zip" "%%i\*" -mx=0


salvati quell'altro come backup, sostituisci la riga 2 e riprova


p.s mx può essere: 0 | 1 | 3 | 5 | 7 | 9, no numeri pari.
Top
Profilo Invia messaggio privato
uomodeighiacci
Dio minore
Dio minore


Registrato: 01/01/09 20:29
Messaggi: 769

MessaggioInviato: 22 Dic 2009 12:28    Oggetto: Rispondi citando

ottimo e abbondante.. ok!
grazie, funziona tutto, inoltre mettendo nella stringa 7z.exe e spostando i files 7z.exe e 7z.dll nella stessa cartella del .bat se ne ottiene una sorta di versione "portable".
Ora vado a costruire il più grande pupazzo di neve del mondo.
Top
Profilo Invia messaggio privato
skan
Eroe
Eroe


Registrato: 14/12/09 13:34
Messaggi: 61

MessaggioInviato: 22 Dic 2009 12:30    Oggetto: Rispondi citando

uomodeighiacci ha scritto:
ottimo e abbondante.. ok!
grazie, funziona tutto, inoltre mettendo nella stringa 7z.exe e spostando i files 7z.exe e 7z.dll nella stessa cartella del .bat se ne ottiene una sorta di versione "portable".
Ora vado a costruire il più grande pupazzo di neve del mondo.


bene bene, prego. ciao Wink
Top
Profilo Invia messaggio privato
uomodeighiacci
Dio minore
Dio minore


Registrato: 01/01/09 20:29
Messaggi: 769

MessaggioInviato: 04 Gen 2011 18:58    Oggetto: Rispondi

Dopo più di un anno mi sono accorto che il buon vecchio WinRAR permette di fare la stessa cosa Embarassed

Selezionare le cartelle da archiviare > cliccare su "archivia" > appare una finestrella, portarsi nel menù "file" e mettere la spunta ad "inserisci ogni file in un propio archivio"
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Software - generale Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi