7-zip en ligne de commande
Diverses considérations
Version batch
Pour utiliser 7-zip en ligne de commande, il faut se servir de l’exécutable 7-z.exe (et non pas 7-zip.exe).
Mode silencieux
Terminer la commande par > nul (à la place de la sortie dans div.txt — cf l’exemple ci-dessous).
Indication du chemin dans l’archive
Dans « l’archive », le nom de fichier sera précédé de l’indication des répertoires dans la mesure où ce sont ces seuls derniers qui ont été spécifiés dans la commande. Exemple :
c:\Progra~1\7-Zip\7z a -tzip h:\SAV\sav%DATE%.zip info/
Avec cette commande, les noms de fichiers seront stockés précédés par info/. Attention : dans la suivante, les noms de fichiers figureront par contre seuls :
c:\Progra~1\7-Zip\7z a -tzip h:\SAV\sav%DATE%.zip info/*
Création automatique d’un auto-extractible
Ce batch a pour but de mettre à disposition un fichier exploitable sur un système de la famille UNIX aussi bien que sous Windows. Il compresse un fichier en gz standard via un tar, puis crée un auto-extractible spécifiquement "Win32". Le nom du fichier est mis dans une variable d’environnement "nfic".
@echo off :: archivage-compression utilisant 7-zip http://www.7-zip.org/ :: ----------------------------------------------------------- :: Parametre : nom du fichier a traiter set nfic=%1 :: adapter ici le nom qualifié du programme :: remarque : l'indication du chemin complet reduit le temps de traitement set PROG="c:\Progra~1\7-Zip\7z" cls if exist %nfic% goto suite echo Le fichier %nfic% n'existe pas pause goto :EOF :suite echo -------------- Genere tar puis gzip --------------------- if exist %nfic%.gz del %nfic%.gz %PROG% a -ttar %nfic%.tar %nfic% %PROG% a -tgzip %nfic%.gz %nfic%.tar echo ----------- Genere self-extractible (pour Win32) --------------- %PROG% a -sfx7zC.sfx %nfic%.exe %nfic% echo -------------- Fin du traitement - End Processing -------------- if exist %nfic%.tar del %nfic%.tar
Au lancement de l'autoextractible (".exe"), un prompt demandera dans quel répertoire le(s) fichier(s) seront écrits.
Création d’une somme de contrôle
Exemple avec SHA256 :
7z h -scrcsha256 [nom_fichier] > [sortie].sha
Sauvegardes sur le réseau
Ce fichier de commandes envoie des sauvegardes au format 7z sur un lecteur réseau de style Microsoft (s:\). Noter la façon précise dont 7-zip analyse les "wilcards" (« * » n’est pas la même chose que « *.* »). Le troisième fichier sauvegarde est assorti d’un mot-de-passe (argument -p). Le fichier div.txt sert seulement à sortir et éventuellement conserver une trace des traîtements.
@echo off :: **** SAUVEGARDE DONNEES LOCALES SUR SERVEUR RESEAU **** :: envoyer avec un mot-de-passe en parametre :: pour avoir la date et l'heure echo '*******************************************' > div.txt dir div* >> div.txt :: Envoie sur S: le répertoire "PROJET" de l'utilisateur woyoo 7z a -t7z s:\PUBLIC\MONDOSSIER\PROJET.7z "c:\docume~1\woyoo\mesdoc~1\PROJET\*" >> div.txt :: Noter "*.*" et non pas "*" : on ne traite que les fichiers, pas les sous-repertoires 7z a -t7z s:\PUBLIC\MONDOSSIER\voy_bin.7z "c:\docume~1\woyoo\mesdoc~1\woy\bin\*.*" >> div.txt :: -p : utilisation du mot de passe pour cryptage 7z a -t7z s:\PUBLIC\MONDOSSIER\voy_data.7z "c:\docume~1\woyoo\mesdoc~1\woy\data\*" -p%1 >> div.txt :: visu resultat et log (facultatif) type div.txt | more if exist logsav.txt copy logsav.txt + div.txt logsav.txt if not exist logsav.txt rename div.txt logsav.txt if exist div.txt del div.txt
Lancement de 7-Zip sur une liste de fichiers.
On peut lancer 7-Zip en batch pour une liste de fichiers écrite dans un simple fichier texte.
- Exemple de commande
- 7z a -tzip archive.zip @listefic.txt
- Fichier listefic.txt avec utilisation d’un groupe "*".
-
"mes recettes\*.rtf" java\*.class
Camouflage de données dans une image.
Un fichier quelconque est compressé/chiffré par le logiciel 7z avec option mot-de-passe. Puis on l'ajoute à la fin d’un fichier image de type jpg/jpeg.
@echo off cls :: Camouflage de données :: Parametre 1 : nom complet (avec extension) du fichier à cacher :: Parametre 2 : nom de l'image lue en entree (sans ".jpg" à la fin) :: Parametre 3 : image sortie (sans ".jpg" à la fin) :: Parametres saisis dans le cas où ils ne sont pas passes en entree if "%1"=="" goto s1 set nfic=%1 goto s10 :s1 echo Fichier lu: set /P nfic= :s10 if exist %nfic% goto suit1 echo Le fichier %nfic% n'existe pas pause goto :EOF :suit1 if "%2"=="" goto s2 set d_img=%2 goto s20 :s2 echo Image utilisee: set /P d_img= :s20 if exist %d_img%.jpg goto suit2 echo Le fichier %d_img%.jpg n'existe pas pause goto :EOF :suit2 if "%3"=="" goto s3 set sortie=%3 goto s30 :s3 echo Image sortie: set /P sortie= :s30 :: Controle existence programme 7z set PROG="c:\Progra~1\7-Zip\7z.exe" if exist %PROG% goto suit3 echo Le programme %PROG% n'existe pas pause goto :EOF :suit3 :: -p=entrée d'un mot de passe echo Entrer un mot de passe %PROG% a -t7z -p sortie.7z %nfic% > nul if exist %sortie%.jpg del %sortie%.jpg copy/B %d_img%.jpg + sortie.7z %sortie%.jpg > nul del sortie.7z
Grâce à l’option B (comme binaire), le fichier créé par l’opération copy reste connu et utilisable sans problème en tant qu’image JPEG ; néanmoins, cette dernière, une fois ouverte par le logiciel de (dé)zipage, le fichier ajouté précédemment est reconnu et peut être extrait tout aussi simplement. Exemple en ligne de commande :
c:\Progra~1\7-Zip\7z.exe e div.jpg -oC:\temp
Dans ce dernier exemple, l’option -o permet d’extraire vers un emplacement (répertoire) particulier (ici : temp, à la racine du disque C).