Geekissimo

Convertire archivi zip in 7z con un semplice script

 
Francesco Grauso
11 Agosto 2010
1 commento

Il formato zip è il formato standard per la compressione dei file, tuttavia alcuni sistemi preferiscono utilizzare il formato 7z, perché offre rapporti di compressione decisamente migliore. Se anche a voi è capitato qualche volta di dover convertire un archivio zip in 7z oppure in rar, vi sarete sicuramente accorti quanto è noiosa la procedura perchè dobbiamo estrarre tutto l’archivio e poi ricomprimerlo. Questa procedura possiamo farla quando sono due, al massimo tre archivi. Ma quando invece ne dobbiamo convertire molti. Ecco che ci viene in aiuto un semplicissimo script in Batch scritto da: Jason Faulkner.

Con questo script è possibile convertire tutti i files zip presenti in una cartella in files 7z.

Codice:

@ECHO OFF
ECHO Deep Archive
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.

REM Takes a Zip file and recompresses it as 7z archive.
REM Script process:
REM 1. Decompress the existing archive.
REM 2. Compress the extracted files in 7z format.
REM 3. (optional) Validate the new 7z file.
REM 4. (optional) Delete the source archive.
REM
REM Usage:
REM DeepArchive ZipFile
REM
REM Requirements:
REM The 7-Zip command line tool (7za.exe) is in a location set in the PATH variable.
REM
REM Additional Notes:
REM This script processes a single zip archive.
REM To process all zip archives in a folder, use the ForFiles command from the command line:
REM FORFILES /P “pathtozipfiles” /M *.zip /C “cmd /c DeepArchive @path”
REM
REM To run the archive compression/decompression as low priority background processes
REM add this in front of the 7ZA commands (DO NOT add this in front of the validation 7ZA command):
REM START /BelowNormal /Wait
REM Adding the above command will use a new window to perform these operations.

SETLOCAL EnableExtensions EnableDelayedExpansion

REM Should the deep archive file be validated? (1=yes, 0=no)
SET Validate=0

REM Compression level: 1,3,5,7,9 (higher=slower but more compression)
SET CompressLevel=5

REM Delete source zip file on success? (1=yes, 0=no)
SET DeleteSourceOnSuccess=1

REM —- Do not modify anything below this line —-

SET ArchiveFile=%1
SET DeepFile=%ArchiveFile:.zip=.7z%
SET tmpPath=%TEMP%%~nx1
SET tmpPathZip=”%tmpPath%*”
SET tmpPath=”%tmpPath%”
SET tmpFile=”%TEMP%tmpDeepArchive.txt”

IF NOT EXIST %tmpPath% (
MKDIR %tmpPath%
) ELSE (
RMDIR /S /Q %tmpPath%
)

ECHO Extracting archive: %ArchiveFile%
7ZA x %ArchiveFile% -o%tmpPath%
ECHO.

ECHO Compressing archive: %DeepFile%
7ZA a -t7z -mx%CompressLevel% %DeepFile% %tmpPathZip%
ECHO.

IF {%Validate%}=={1} (
ECHO Validating archive: %DeepFile%
7ZA t %DeepFile% | FIND /C “Everything is Ok” > %tmpFile%
SET /P IsValid=< %tmpFile% IF !IsValid!==0 ( ECHO Validation failed! DEL /F /Q %DeepFile% ECHO. GOTO Fail ) ELSE ( ECHO Validation passed. ) ECHO. ) GOTO Success :Success IF {%DeleteSourceOnSuccess%}=={1} DEL /F /Q %ArchiveFile% ECHO Success GOTO End :Fail ECHO Failed GOTO End :End IF EXIST %tmpFile% DEL /F /Q %tmpFile% IF EXIST %tmpPath% RMDIR /S /Q %tmpPath% ENDLOCAL

Allora, vediamo come funziona, come prima cosa copiamo l’intero codice qui sopra in un file di testo e lo salviamo come un file batch con nome ed estensione “DeepArchive.bat“; possiamo anche scaricarlo direttamente su SysadminGeek.com. Ora questo è lo script vero e proprio. All’interno dello script si possono modificare alcuni parametri, che per ora lascio scoprire ai più smanettoni. Lo script per funzionare ha bisogno del programma 7-Zip per linea di comando, quindi scarichiamo l’archivio 7za465.zip e lo estraiamo in C:Windowssystem32.

Tutto è pronto. Per estrarre tutti gli archivi presenti in una determinata cartella basta copiare il file DeepArchive.bat nella cartella dove risiedono gli archivi e digitare dal prompt dei comandi il seguente codice: FORFILES /P “C:UsersFrancescoDesktopzipfile” /M *.zip /C “cmd /c DeepArchive @path” dove C:UsersFrancescoDesktopzipfile lo dobbiamo sostituire con il percorso della cartella in cui si trovano gli archivi. All’inizio può essere scocciante, ma una volta completato il lavoro, convertire questi archivi sarà un gioco da ragazzi. Ah, vi ricordo che lo script sostituisce i file zip con quelli 7z, quindi i files zip verranno persi (Se vogliamo che ciò non accada, sostituiamo la riga SET DeleteSourceOnSuccess=1 con SET DeleteSourceOnSuccess=0)

Potrebbe interessarti anche
Articoli Correlati
Steganography, nascondere archivi compressi in immagini JPG

Steganography, nascondere archivi compressi in immagini JPG

Ci sono circostanze in cui spedire messaggi di posta elettronica contenti informazioni di una certa rilevanza o chattare fornendo all’altra persona dati personali può essere rischioso. Al fine di evitare […]

File Extractor: visualizzare ed estrarre file ZIP, RAR, ARC e molti altri ancora

File Extractor: visualizzare ed estrarre file ZIP, RAR, ARC e molti altri ancora

Spesso ci si ritrova ad avere a che fare con archivi compressi in diversi formati ed altrettanto frequentemente capita di non avere a propria disposizione le giuste risorse mediante cui […]

SpinZip, creare file ZIP in tre differenti modalità

SpinZip, creare file ZIP in tre differenti modalità

Se spesso avvertite la necessità di creare archivi compressi in formato .zip allora, cari lettori di Geekissimo, potrete senz’altro trovare particolarmente utile SpinZip, la risorsa alla quale, quest’oggi, andiamo a […]

Zip Repair: ripariamo i nostri archivi zip corrotti

Zip Repair: ripariamo i nostri archivi zip corrotti

.Zip è forse uno dei formato più conosciuti ed utilizzati per la compressione di files. Ma molto spesso questi file compressi vengono danneggiati sopratutto a causa di un problema durante […]

PeaZip, Meravigliosa Utility per la Gestione di Archivi in Windows

PeaZip, Meravigliosa Utility per la Gestione di Archivi in Windows

PeaZip: un nome, una rivelazione! È proprio così, dal nome avete già capito di cosa si tratta, PeaZip, è una fantastica a dir poco, utility per la gestione degli archivi […]

Lista Commenti
Aggiungi il tuo commento

Fai Login oppure Iscriviti: è gratis e bastano pochi secondi.

Nome*
E-mail**
Sito Web
* richiesto
** richiesta, ma non sarà pubblicata
Commento

  • #1Fabrizio Cinti

    Dovreste specificare che FORFILES è un comando esistente solo sotto Vista/7. Inoltre, segnalo l'archiviatore open source izarc che converte da un formato all'altro (non solo zip e non solo 7z) senza bisogno di scriptare. Nel mio sistema ha sostituito anche 7-zip.

    11 Ago 2010, 5:47 pm Rispondi|Quota