Si vous ne l’aviez pas deviné maintenant, les fichiers batch peuvent servir de type rudimentaire de langage de programmation. Une chose que les langages de programmation modernes offrent est la possibilité de modulariser le code en petits morceaux de sorte que si vous changez un morceau, vous ne risquez pas de changer accidentellement un code sans rapport. Vous pouvez modulariser un gros fichier de commandes en le divisant en plus petits et en utilisant l’instruction CALL pour appeler les modules individuels selon les besoins.

Prenons le cas d’un système de menus qui permet à l’utilisateur d’invoquer l’une des nombreuses fonctions. Ce que nous allons faire est de placer chacune des fonctions dans leur propre fichier de commandes et d’utiliser l’instruction CALL dans le fichier de commandes du menu principal pour appeler la fonction sélectionnée, qui reviendrait ensuite au menu pour permettre à l’utilisateur de sélectionner une autre fonction.

Voici à quoi peut ressembler Menu.bat:

@ECHO OFF :TOP CLS ECHO   Welcome to the Main Menu! Here are your choices...

ECHO.

ECHO A) Perform Function A          B) Perform Function B ECHO C) Perform Function C          D) Perform Function D ECHO.

ECHO Q) Quit ECHO.

CHOICE /C ABCDQ GOTO %ERRORLEVEL% :5 GOTO :EOF :4 CALL FuncD.bat GOTO TOP :3 CALL FuncC.bat GOTO TOP :2 CALL FuncB.bat GOTO TOP :1 CALL FuncA.bat GOTO TOP

Et voici à quoi peut ressembler FuncA.bat:

ECHO This is Function A PAUSE

Malgré le fait que rien d’intéressant ne se passe ici, c’est le début d’un cadre décent pour un système de menus basé sur des commandes. Et il y a quelques éléments à noter. En travaillant de haut en bas, la première nouvelle commande que nous rencontrons est la commande CLS. Cette simple commande efface simplement l’écran afin que notre menu soit toujours beau par lui-même. L’œil averti remarquera également certaines déclarations ECHO qui sont immédiatement suivies d’un point. C’est ainsi que vous sortez une ligne vide. Un autre nouvel élément est l’étiquette intégrée: EOF. Cela évite d’avoir à déclarer votre propre étiquette qui existe en dernière ligne du fichier (comme mon étiquette « : Done » utilisée dans d’autres astuces).

Cela nous amène aux instructions CALL. Le paramètre spécifié avec CALL est le nom du fichier de commandes qui doit être appelé ensuite. Ainsi, par exemple, si l’utilisateur choisissait l’option A dans le menu, le fichier de commandes irait immédiatement à l’étiquette: 1, ce qui entraînerait l’appel de FuncA.bat ensuite. Mon fichier FuncA.bat ECHO simplement une ligne et effectue une PAUSE. L’instruction PAUSE entraîne la sortie d’une ligne indiquant «Appuyez sur n’importe quelle touche pour continuer …​». Il suspend ensuite l’exécution du fichier batch jusqu’à ce que l’utilisateur appuie sur une touche. Une fois qu’une touche est enfoncée, le fichier de commandes continue, ce qui dans ce cas signifie que FuncA.bat se termine et que le contrôle reprend dans le fichier de commandes du menu principal à la ligne qui suit immédiatement l’appel à FuncA.bat. La prochaine chose à faire sera donc le GOTO TOP, qui recommencera tout.

Notez que vous n’avez pas besoin de mettre un autre « @ECHO OFF » en haut de FuncA.bat car l’état ECHO est conservé lorsque FuncA.bat est appelé.

Cette astuce (13187) s’applique à Windows 7, 8 et 10.