Le BATCH est le langage shell historique utilisé sous Windows et hérité du MD-DOS.
C’est un langage de script utilisé dans les fichiers dont l’extension est : .bat ou plus moderne le .cmd
Exemple de script :
Note : les espaces dans le script ci-dessus ne servent uniquement qu’à la compréhension.
Copiez le script dans un éditeur de texte, « Bloc Notes » par exemple, sauvegardez le en « .cmd » sur votre bureau puis double-cliquez dessus pour le lancer.
Vous devriez avoir la même sortie.

Sortie :

Décortiquons maintenant le script ci-dessus :
@ = sert à inverser l’état de l’affichage standard
echo = sert à gérer l’affichage
off = désactiver
L’affichage standard est paramétré pour afficher par défaut les lignes de commandes.
En inversant cet état avec « @« , en ajoutant « echo » et en finissant par « off » cela revient à dire au terminal =>j’inverse l’affichage standard en désactivant l’affiche des lignes de commande.
Voyons ce qu’il se passe concrètement avec « @echo off » :

Avant « @echo off« , nous remarquons que le chemin d’exécution du script apparait, pour moi il affiche :
C :\Users\John>
Une fois la commande tapée et après avoir validé en appuyant sur la touche « Entrée » du clavier, plus rien n’est affiché…
C’est uniquement en tapant la commande « @echo on » que l’affichage revient à son état standard.
C :\Users\John> réapparait.
Le préfixe « @« ,quand il est placé en début de ligne, sert donc à inverser l’état de l’affichage standard pour l’exécution de la commande qui suit, par exemple « echo« .
ECHO
La commande suivante du script « echo Hello world ! » donne en sortie :

Nous remarquons que « echo » ne s’affiche pas mais que « Hello World ! » est bien la !
La commande « echo » sert donc à afficher le message qui suit.
« echo. » devrait alors afficher un point ?
Eh bien non, « echo » suivit d’un « . » set à afficher une ligne vide, celle qui est en dessous de « Hello wolrd !« .
Cependant, si vous espacez « echo » et « .« , alors l’interpréteur comprendra que vous désirez afficher le message qui est le point.
REM
« rem » sert à mettre une remarque dans votre script, cette remarque s’affichera en sortie si l’affichage standard est activé.
Su ce script, « @echo off » étant en début de script, l’affichage standard est désactivé donc la ligne « rem » ne s’affiche pas.
A l’inverse, si on remplace « @echo off » par « @echo on » en début de script pour activer l’affichage standard, voyons ce qu’il se passe en sortie :

Tout s’affiche, la ligne « echo. » et donc sa sortie en dessous qui est une ligne vide, la ligne « rem » et donc la remarque qui suit la commande, etc…
On recommence avec « @echo off » :

Avouez que c’est plus lisible !
: :
Le double deux-points « :: » sert à afficher un commentaire dans votre script.
Très utile pour décrire tout votre script si il comporte beaucoup de lignes.
A l’inverse de « rem« , la ligne de commentaire ne s’affichera jamais.
En réalité, « :: » n’est pas une commande mais un « préfixe », tout comme « @« , les préfixe ne sont pas renvoyés par l’affichage standard.
PAUSE
La commande « PAUSE » va mettre le script en pause et va indiquer à l’utilisateur le message suivant : « Appuyez sur une touche pour continuer…«
Donc après avoir appuyé sur un touche, le script reprend, ou s’arrête dans notre cas car la commande est à la fin du script (la fenêtre de l’invite de commandes disparait).