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 :

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).