Site icon Gioxx.org

7-Zip: compattare più cartelle con un doppio clic (Aggiornato)

Utilizzare 7-Zip per creare pacchetti di installazione 3

Avevo la necessità di creare un file d’archivio (7z) per ciascuna sottocartella presente in una determinata cartella padre. 7-Zip alla mano e riga di comando per una soluzione presto fatta, l’ho provato con successo su macchina Windows 2019, giusto qualche accortezza che vado a descriverti poco sotto ma null’altro, è l’ideale nel caso in cui tu non voglia compattare tutto un grande calderone in un solo file d’archivio (come spesso accade per esigenza).

Archivi multipli con 7-Zip

Il codice qui sotto parte da una cartella padre contenente molte sottocartelle, ognuna delle quali verrà inserita in un archivio 7z separato, tu puoi certamente modificare alcuni parametri come la posizione di 7-Zip e – se lo desideri – il nome del file prodotto. Copia il codice qui di seguito e salvalo in un file CMD (esempio: 7z.cmd) tramite editor di testo, ti spiego cosa puoi ritoccare.

@echo off
if exist "%ProgramFiles%\7-Zip\7z.exe" set APP="%ProgramFiles%\7-Zip\7z.exe"
if exist "%ProgramFiles(x86)%\7-Zip\7z.exe" set APP="%ProgramFiles(x86)%\7-Zip\7z.exe"
for /d %%X in (*) do (
    PUSHD "%%X"
    %APP% a "..\%%X.7z" "*"
    POPD
)

Il codice parte dal presupposto che tu abbia installato 7-Zip a 64 bit (o che sia installato in una macchina a 32 bit), per questo motivo il puntamento al file 7z.exe corrisponderà a %ProgramFiles%. Se così non fosse (per esempio nel caso in cui tu abbia installato 7-Zip 32 bit su una macchina a 64 bit) ricorda di sostituire %ProgramFiles% con %ProgramFiles(x86)%.

L'articolo è stato aggiornato

Il codice aggiornato verifica l’esistenza di 7-Zip nella cartella Program Files (valida per sistemi a 64 o 32 bit), in caso di fallimento (sistema a 64 bit ma 7-Zip installato a 32 bit) passerà all’utilizzo della cartella Program Files (x86). È chiaramente disponibile anche la versione scaricabile di 7z.cmd (su Box) già aggiornata, vedi in fondo all’articolo.

Lo script analizza tutte le cartelle trovate nella sua stessa posizione e per ciascuna di queste richiamerà l’eseguibile di 7-Zip producendo un archivio chiamato con lo stesso nome della cartella ed estensione 7z (utilizzando le impostazioni predefinite di 7-Zip).

Per modificare il nome del file potrai ritoccare %%X.7z inserendo ciò che ritieni opportuno, per esempio archivio_%%X.7z o %%X_archivio.7z, cerca solo di evitare di toccare %%X perché è ciò che riporta il nome della cartella compattata sul file 7z finale (diversamente faticheresti a riconoscere quell’archivio). Nota importante: lo script (quindi il file CMD) dovrà risiedere nella stessa cartella padre dove all’interno ci sono le sottocartelle da compattare. Lanciarlo da un percorso UNC di rete non funzionerà, dovrai quindi mappare l’unità di rete con una lettera tutta sua prima di lanciarlo (diversamente inizierà a compattare ciò che trova nella cartella di sistema, quindi C:\Windows).

Per comodità ti propongo il download del file CMD già pronto, lo trovi qui: go.gioxx.org/7zcmd (aggiornato).

Questo è quanto, spero possa tornarti utile.


Riconoscimenti: stackoverflow.com/questions/35183941/7zip-bat-command-compress-multiple-folders-to-multiple-corresponding-archives

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version