Maintenant que vous commencez à maitriser quelques bases de Batch, nous allons nous lancer dans l’installation d’une application.

Le but va être d’installer l’application « 7Zip » à partir d’une source « 7z2600-x64.exe » que nous aurons déjà dans un dossier qui accueillera également le script en .cmd.

Créez un fichier texte dans le dossier ou se trouve le binaire de 7Zip (le fichier d’installation en .exe) et nommez le comme vous le souhaitez, ici il s’appellera « install.cmd« .

Vérifiez si les extensions de fichiers sont bien activées :

Ensuite, pour enregistrer le script, faite également attention à ne pas l’enregistrer en .txt pour que l’extension .cmd soit bien prise en compte.
Sélectionnez « Tous les fichiers » dans Type :

Voici le script :

BAT (Batchfile)
@echo off
:: Script d'installation de 7-Zip

REM Renseignement du chemin du fichier d'installation dans la variable "installer"
set "installer=%~dp07z2600-x64.exe"

if not exist "%installer%" (
    echo Erreur : 7-Zip introuvable.
    pause
    exit /b 1
)

REM Installation de 7zip avec un message
echo Installation de 7-Zip en cours...
"%installer%" /S

if %errorlevel% equ 0 (
    echo 7-Zip installe avec succes !
) else (
    echo Erreur lors de l'installation (code: %errorlevel%)
)

pause

Cela donne ça dans le Bloc-notes :

Décortiquons ce méchant script !


Step by step

@echo off

Celui-là nous l’avons déjà vu, il désactive l’affichage des commandes à l’écran.

:: Script d'installation de 7-Zip

Juste un petit commentaire.

REM Renseignement du chemin du fichier d'installation dans la variable "installer"

Une remarque pour dire ce que la ligne d’en dessous va faire.

set "installer=%~dp07z2600-x64.exe"

Ah ! une nouvelle 🙂


« set » permet de définir une variable d’environnement, une valeur dynamique qui peut être modifiée.
Ici, la variable s’appelle « installer » et ce qu’elle contient est affiché en orange/marron =>7z2600-x64.exe

La valeur que contient la variable est précédée du chemin, ici c’est « %~dp0 » qui veut dire que cette valeur, qui est un fichier exécutable (.exe), se trouve dans le même dossier que le script.
Ah oui, si vous ne savez pas ce qu’est ce chemin ou si vous ne vous en souvenez plus, c’est ici que ça se passe => Chemins relatifs & absolus

Par exemple, nous aurions pu créer une variable qui s’appelle « test » et décider que l’exécutable se trouve dans le dossier \Temp à la racine de « C :« .
Cela donnerait ça :

set "test=C:\Temp\7z2600-x64.exe"

Reprenons !

if not exist "%installer%" (
    echo Erreur : 7-Zip introuvable.
    pause
    exit /b 1
)

Ah, encore du neuf !

La commande « if » est une instruction conditionnelle.
« not » est un opérateur logique qui a pour rôle d’inverser le résultat
La commande « exit » donne une action
Si on reprend la phrase en bon français : if not exist= si n’existe pas

la variable « installer » est entre % car c’est une syntaxe pour accéder à la valeur qui est = 7z2600-x64.exe.

D’ailleurs, j’en profite pour dire que « not exite » pourrait être remplacé par d’autres opérateurs ou condition :

Continuons…

echo Erreur : 7-Zip introuvable.

Si la condition est validée, en d’autres termes, si le fichier.exe n’existe pas dans le dossier, alors « echo » va afficher le message suivant : Erreur : 7-Zip introuvable.

Le script va alors s’arrêter, se mettre en « pause » vous demandant d’appuyer sur une touche pour continuer et « exit » va alors quitter uniquement le script actuel sans fermer la fenêtre.
/b 1 = option qui quitte le script en donnant le code d’erreur « 1 » sans fermer la fenêtre.

pause
exit /b 1

On continue ?

REM Installation de 7zip avec un message
echo Installation de 7-Zip en cours...
"%installer%" /S

REM = une remarque pour les zamis qui vont vouloir modifier le script quand je serais abs du bureau ^^
echo = affiche le texte qui suit

"%installer%" /S

Va ouvrir la variable « installer » et donc lancer notre exécutable 7z2600-x64.exe
/S = est un argument pour les .exe qui veut dire « mode silencieux » (pas d’affichage graphique, pas de paramétrage ou de clics pendant l’installation).

D’ailleurs, si vous voulez connaitre les options en fonction des différents types d’installeurs,
c’est par ici => les installeurs

if %errorlevel% equ 0 (
    echo 7-Zip installe avec succes !
) else (
    echo Erreur lors de l'installation (code: %errorlevel%)
)

On se retrouve à nouveau avec une condition.
Le principe est donc le même qu’avec la précédente, avec une petite subtilité en plus…

if %errorlevel% equ 0 (

Si on traduit cette ligne littéralement, cela donne :
if %errorlevel% equ 0 ( = si le niveau d’erreur est égal à 0


D’ailleurs, %errorlevel% est bien une variable, mais une variable système.
Elle n’est pas à déclarer comme notre variable %installer%.
Elle est déjà déclarée par le système et aura donc une valeur que nous voulons appeler afin de la vérifier, ici c’est une valeur en relation avec le code d’erreur lié à l’installation.

echo 7-Zip installe avec succes !

Nous afficherons donc les message « 7-Zip installe avec succès ! » si ce code d’erreur est égal à 0.

) else (
    echo Erreur lors de l'installation (code: %errorlevel%)

Voilà la petite subtilité de notre condition, else qui veut dire sinon, et qui revient à dire :
Si le code d’erreur n’est pas 0 alors…

Le message qui suit echo s’affichera avec le code d’erreur.

pause

Et on fini ce script par une pause afin que vous puissiez copier le code d’erreur, cela vous aidera à rechercher la cause.

Maintenant si vous lancez le code en double cliquant sur le fichier voilà ce que ça donne :

La console retourne une sortie annonçant que Z-Zip est installé avec succès.
Vérifions, la confiance n’exclut pas le contrôle ^^ :

=> Z-Zip est bien installé sur le système, bravo !


Alors, c’était si méchant que ça ?
Non vous voyez, le Batch se traduit bien en langage humain.
Les conditions nous le représente bien d’aileurs.

Une dernière choses avant de vous laisser manipuler les installations avec Batch et revoir tous les packs d’installation de votre entreprise :

Vous avez remarqués beaucoup de ( ou de ) dans le script ?
Ce sont des blocs de commandes, Batch en a besoin pour exécuter les conditions par exemple.

Petit exemple visuel :

if [condition]
   ┌───────────────────────┐
   │                       │ ← Bloc exécuté si la condition est vraie
echo Succès !      │
   └───────────────────────┘
else
   ┌───────────────────────┐
   │                       │ ← Bloc exécuté si la condition est fausse
echo Erreur...     │
   └───────────────────────┘


A ne pas oublier !

Eh voilà !
Votre premier script d’installation en Batch.