Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Introduction aux fichiers batch

Par Jonathan BURT Publié le 10/10/2015 à 00:11:11 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Les fichiers batch ou scripts windows permettent de faire des tâches planifiées ou des tâches répétitives. Souvent utilisés pour l'administration de grands parcs informatiques, il vous sera utile de savoir comment les utiliser en entreprise. Vous connaissez surement l'invite de commande (cmd.exe), les commandes sont les mêmes pour les fichiers batch. Bien évidemment ils vous seront également utiles pour votre usage personnel. On peut utiliser des variables, des variables d'environnements, des conditions et des boucles. Presque comme tout autre langage de développement !

Créer un fichier batch et comment s'en servir

Tout d'abord pour écrire un script il vous suffit d'avoir un simple éditeur de texte comme par exemple Bloc note et Notepad. Pour qu'ensuite il soit interprété comme un fichier batch il faut cliquer sur Enregistrer sous, choisir l'emplacement et changer l'extension du fichier en *.bat. Pour cela il faudra également choisir Tout type de fichier dans la liste déroulante.

Les scripts sont utilisés le plus souvent à distance. C'est pourquoi plus loin je vous expliquerai comment lancer votre script à distance et sur autant de pc que vous le souhaiterez. Mais pour l'instant vous vous demandez surement à quoi ils peuvent biens vous servir. Ils vous permettront de :

  • Démarrer ou installer un programme.

  • Eteindre ou redémarrer un ordinateur.

  • Gérer les périphériques USB.

  • Supprimer, créer ou modifier des fichiers et répertoires.

  • Gérer les paramètres réseaux.

  • Etc...

Vous réaliserez qu'on peut presque tout faire avec les scripts mais souvent il faudra utiliser des outils. Mais ils sont gratuits et il y a de très bonnes documentations pour apprendre à les utiliser.

Les premières commandes

Vous pourrez trouver les commandes de bases en tapant « help » dans l’invite de commande (DémarrerExécutercmd). Le plus compliqué ne sera pas de se souvenir des commandes mais de leurs paramètres, pour cela vous pouvez taper « votreCommande / ? » pour connaitre tous les paramètres. N’oubliez pas le plus important, commenter le script grâce à « REM » en début de ligne.

Affichage :

Pour commencer je vous présente la commande « echo » qui permet d’afficher du texte à l’écran.

echo Hello SUPINFO !

Mais la plupart du temps vous ne voudrez rien afficher lors de l’exécution d’un fichier batch, il faudra utiliser.

@echo off

Pour changer le titre de la fenêtre il faut utiliser « @title MonTitre ». Vous pouvez aussi changer la couleur du texte et de l’arrière-plan avec la commande « color ».

color 0C

Pour lancer un programme il faut utiliser la commande « start ».

start leChemin/DeMon/Executable.exe

Vous pouvez rajouter après « start » /MIN pour qu’il s’exécute en fenêtre réduite ou /MAX en pleine écran.

Gérer les fichiers et répertoires :

La commande « del » permet de supprimer des fichiers et des sous-dossiers.

del monDossier\*

« rd » permet de supprimer les dossiers. Mais vous pouvez également en créer avec « md ».

Vous pouvez copier ou sauvegarder des fichiers avec la commande « xcopy ». Je vous invite à lire une documentation complète sur cette commande car elle est très puissante et permet de faire énormément de choses c’est pourquoi elle possède près de 27 options.

Pour renommer des fichiers, utilisez la commande « ren ». Pour lister des fichiers il y a la commande « dir » et pour déplacer des fichiers utilisez « move ».

Conditions, boucles et variables

If...Else... :

Si vous connaissez un peu le développement, ce ne sera pas très difficile. Encore moins si vous connaissez le langage assembleur. Tout d’abord nous allons aborder la condition « if…else… ». « If » signifie « si » et « else » signifie « sinon », c’est-à-dire « Si condition alors faire une action sinon faire une autre action ». Donc on fait des conditions avec cette structure : if (condition) alors (action). Ou celle-ci : if (condition) (action) else (autreAction).

On peut utiliser des opérateurs :

Table 1. Opérateurs :

GEQ | >= Supérieur ou égal à...
GTR | > Strictement supérieur à...
LEQ | <= Inférieur ou égal à...
LSS | < Strictement inférieur à...
EQU | == Egal à...
NEQ | != Différent de...

Par exemple :

if 7 LSS 5 (echo 7 est inférieur à 5) else (echo 7 est supérieur à 5)

Il existe des instructions intéressantes comme « exist » qui permet de faire une condition si un fichier existe ou pas.

if exist monFichier.doc ren sonFichier.doc

On peut également rajouter « not » si on veut vérifier l’inverse.

if not exist monFichier.doc echo Ce fichier n’existe pas !

Par contre pour vérifier si une variable existe on utilise « defined ».

Goto :

« goto » signifie « aller à.. » ce qui permet de sauter vers une partie du code spécifique. Pour cela il faut utiliser ce qu’on appelle un label. C’est-à-dire qu'il faut placer un label dans le code pour que l’instruction goto saute au label.

If not exist monFichier.txt goto ecrireFichier

Code

:ecrireFichier

echo Fichier Batch. >> monFichier.txt

Vous l’aurez compris on peut créer une boucle avec if et goto si on place le label au-dessus de la condition.

For...In...Do... :

L’instruction « for » permet de faire des itérations. Elle peut donc faire des tâches répétitives. « Pour chaque élément dans un ensemble d’élément faire une commande. » On définit un ensemble d’éléments par un ou plusieurs fichiers ou avec un début et une fin, plus utilisé dans d’autres langages. Chaque élément sera définit par une variable qu’on nommera par une lettre.

for %%A in (monFichier monAutreFichier) do (echo %%A)

for /l %%A in (début, pas, fin) do (echo %%A)

Comme vous pouvez le remarquer on peut évidemment utiliser des paramètres.

Table 2. Paramètres For :

/d Lorsque l’ensemble d’éléments contient des répertoires.
/r La commande sera également exécutée dans les sous-répertoires.
/l Faire une boucle avec début, pas et fin.
/f Permet de parcourir les chaines de caractères et les sorties de commandes.

Les variables :

Pour déclarer une variable il faut utiliser « set » : set variable = valeur. Ensuite lorsque vous voudrez utiliser cette variable il faudra l’entourer du symbole pourcentage : %variable%

Une variable reste définie jusqu’à la fermeture du script. Si vous souhaitez donc utiliser une variable seulement pour une instruction ou que vous ne voulez utiliser trop d’espace il faut se servir de setlocal et endlocal. C’est comme une variable locale.

Set variable = valeur

Setlocal

Set variable1 = valeur

Plusieurs commandes…

Endlocal

Comme vous pouvez le remarquer, ici « variable » restera définie jusqu’à la fermeture du script alors que « variable1 » ne sera plus définie après la commande « endlocal ».

Vous pouvez également faire des opérations avec ces variables mais elles ne se limitent qu’aux additions, soustractions, multiplications et divisions. Il faudra pour cela utiliser le paramètre /a. Si vous désirez demander à l’utilisateur de rentrer une valeur, il faudra utiliser /p.

Set /a incrementation+=1

Set /p variablePrompt=”Entrez votre âge : “

Quelques outils

Je vais vous présenter deux outils totalement gratuits et disponibles sur le site de microsoft. Ces outils sont psexec et devcon. Devcon permet de gérer les périphériques. Vous pourrez afficher tous les périphériques, en supprimer, scanner les périphériques, connaitre la version du firmware d’un appareil etc… Vous retrouverez cet outil en cliquant sur ce lien : https://support.microsoft.com/fr-fr/kb/311272

Psexec, lui, permet d’avoir une invite de commande sur un pc distant, copier et lancer un programme sur un pc distant et lancer un programme sur une liste de pc que vous aurez enregistré dans un fichier texte. Cet outil est très utile surtout lorsque vous êtes en charge d’un parc informatiques. Pour télécharger cet outil cliquez sur ce lien : https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx.

Je pourrai faire un article complet sur ces deux outils si cela vous intéresse mais il existe de nombreuses documentations.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels