L'intérêt des Batchs est donc d'automatiser des tâches répétitives effectuées sous DOS. Les fichiers Batch peuvent
également utiliser toutes les commandes DOS, ce qui rend disponible pour le programmeur un grand nombre de fonctions.
Enfin, leur taille est relativement légère par rapport à d'autres programmes, ce qui facilite leurs "transferts" sur différents disques et supports de stockage. Cependant…
· Le langage Batch n'est pas compilé, il est interprété par COMMAND.COM ce qui rend plus lent l'exécution de programmes
Batch par rapport à des applications écrites directement en langage machine,
· Les fichiers Batch sont directement éditables, donc votre code n'est pas "protégé" à la copie par d'autres programmeurs,
· Enfin, et surtout, des opérations élémentaires telles que le traitement de chaînes de caractères, d'opérations
mathématiques... n'existent pas sous DOS, ce qui implique l'usage de programmes externes (s'ils existent, selon les cas).
TABLE DES MATIERES
● Création d'un fichier Batch
● Notions de bases sur les fichiers Batch
● Les commandes spécifiques
● Passage de paramètres
● Les Boucles
● Aller plus loin dans les fichiers Batch
● Exemple de fichiers Batch
2
1 – Création d'un fichier Batch :
Le terme "Batch" désigne un fichier contenant une suite de commandes qui seront traitées automatiquement. Nous appelons
aussi cela un "traitement par lot". Afin de créer votre premier fichier Batch, suivez cette procédure :
1) Ouvrez un éditeur de texte : Le Bloc-notes par exemple.
2) Inscrivez vos lignes de commandes.
3) Enregistrez votre fichier texte.
4) Cliquez sur le nom du fichier puis appuyez sur la touche F2. Vous serez en mode "Édition".
5) Renommez le fichier en changeant l'extension .txt en .bat. À la question : "Voulez-vous vraiment renommer le fichier",
répondez par Oui. Attention de désactiver au préalable la case "Masquer les extensions de fichiers dont le type est connu"
dans les options avancées de l'Explorateur Windows.
Pour créer un fichier Batch, vous pouvez également utiliser directement l'interpréteur de commandes : pour cela, utilisez la
commande EDIT :
Appeler alors la commande EDIT pour l'éditeur de texte :
2 – Notions de base sur les fichiers Batch :
Malheureusement, la majorité des sources intéressantes qui pourront vous aider à approfondir les techniques de la
programmation Batch sont souvent en anglais... "Xset" est un outil indispensable pour appendre à écrire des fichiers Batch
sous toutes les versions de Windows. De plus, Marc Stern propose de nombreux didacticiels à partir de son site Internet :
http://xset.tripod.com/.
Jerold Schulman qui m'a autorisé à citer quelques-uns de ces scripts anime un site Internet qui propose d'innombrables
pages sur la programmation Batch : http://www.jsiinc.com/. C'est, par ailleurs, un des meilleurs sites traitant des systèmes
NT de Windows.
D'excellents scripts sont également visibles à partir de cette adresse : www.uwasa.fi/~ts/http/http2.html#batch. Timo Salmi
propose une multitude de solutions permettant de résoudre les problèmes les plus courants quand on commence à se lancer
dans la programmation Batch.
Ritchie Lawrence met en lignes de nombreux modèles de scripts et propose quelques utilitaires fort bien faits qui vous
permettront de réaliser des choses étonnantes en mode Ms-Dos ou en Invite de commandes. L'adresse de son site est la
suivante : http://www.commandline.co.uk/index.html.
Enfin, une source inépuisable de trouvailles est proposée à partir de ce forum recouvrant une multitude de thématiques dont
Ms-Dos et l'Invite de commandes : http://www.experts-exchange.com/Operating_Systems/MSDOS. La plupart des exemples
de scripts expliqués dans ce chapitre s'inspirent directement ou indirectement des techniques présentées par ces différents
auteurs.
Quelle différence entre l'extension .cmd .btm et .bat ?
Un fichier . cmd ou .btm ne sera pas reconnu en tant que tel par Windows 9X. Nous pouvons voir cela comme une sorte de
3
garde-fou si tel fichier de commande est parfaitement incompatible avec ces versions de Windows. Par ailleurs, le processus
est légèrement différent : dans le cas d'un fichier .bat ou .cmd, chaque ligne du fichier est exécutée individuellement et le
fichier fermé puis ouvert à chaque lecture d'une nouvelle commande. Dans le cas d'un fichier .btm, le fichier n'est ouvert
qu'une fois, puis lu en mémoire et enfin fermé. C'est donc a priori le mode le plus rapide. Surtout si ce sont des commandes
internes qui sont exécutées.
Se servir des parenthèses dans les fichiers de scripts :
Si vous souhaitez rediriger le résultat de différentes commandes dans un même fichier texte. Par exemple :
@echo off
DIR /s /b *.doc >> resultat.txt
DIR /b *.dot >> resultat.txt
REM etc.
@echo on
Il est dans ce cas plus simple de saisir :
@echo off
(
DIR /s /b *.doc
DIR /s /b *.dot
) >> resultat.txt
@echo on
Cela vous évitera de spécifier plusieurs fois le même fichier de sortie. Par ailleurs, c'est une manière de créer de toutes
pièces un fichier texte :
@echo off
(
@echo Bonjour,
@echo Tout le monde !
) > test.txt
Dans ce dernier cas, les commandes sont regroupées.
Afficher le code de sortie :
À chaque fois que vous saisissez une commande, cette dernière produit un code de sortie qui est principalement :
1 : La commande a renvoyé une erreur
0 : La commande n'a pas renvoyé d'erreur.
C'est la variable %Errorlevel% qui est chargée de suivre les fluctuations de la réussite ou non des commandes exécutées. La
commande "Set" teste les "Errorlevel" en partant de la plus petite valeur puis en procédant par incrémentation de 1. La commande " GOTO" démarre de la plus grande valeur puis procède par décrémentation de 1.
Gérer les caractères accentués :
Les différences entre la norme Ansi (Windows) et OEM (Ms-Dos) font que si vous vous servez d'un éditeur de texte comme le
Bloc-Notes les caractères accentués ne s'afficheront pas correctement dans les sorties écran en mode "Console". Ainsi, la
phrase "Je répète : "Vous êtes un entêté" s'affichera comme cela : Je rÚpÞte : "Vous Ûtes un entÛtÚ". Il y a différentes solutions :
Vous pouvez toujours vous servir de l'éditeur de texte prévu dans toutes les versions de Windows : " Edit".
ll existe de nombreux programmes vous permettant d'opérer la conversion Ansi vers OEM et vice-versa. "OEMANSI.exe" est
un programme écrit en français que vous pouvez télécharger à partir de cette adresse :
http://perso.wanadoo.fr/andre.araste/tele2.htm
Décompressez l'archive ZIP nommée Oemansi.zip puis double-cliquez sur ce fichier exécutable : Setup.exe afin de lancer
l'installation de ce logiciel. Imaginons que notre fichier à convertir s'appelle Test.bat suivez la procédure suivante :
1) Cliquez sur Démarrer/Tous les programmes/OEMANSI/OEMANSI.
2) Cliquez sur le bouton Ouvrir Fichier.
3) Dans la liste déroulante Fichiers de type :, sélectionnez Tous les fichiers (*.*) puis votre fichier Batch.
4) Cochez le bouton radio ANSI(Win) puis la flèche dirigée vers le bas.
4
Il est possible d'effectuer l'opération inverse !
5) Cliquez sur le bouton Sauvegarde OEM puis lancer le processus de conversion.
6) Confirmez le remplacement ou non de l'ancienne version.
Gérer les caractères réservés :
Ces caractères ne peuvent pas être employés "tels quels" dans un script. Le signe % pour être "compris" dans un fichier de
script doit être redoublé. Par ailleurs, nous avons déjà vu que pour afficher un caractère réservé il faut le faire précéder du
signe ^. Dans ce cas-là, il ne sera pas assimilé à une commande, mais bien à un caractère. Afin d'afficher les signes : ! ^ &
< > >> " | créez un fichier Batch contenant cette commande :
@echo off
ECHO ^! ^% ^^ ^& ^< ^> ^>^> ^" ^|
@echo on
Une manière d'afficher les caractères de redirection :
@echo off
<nul (SET /p z=Le^|texte^|de^|sortie) >sortie.txt
@echo on
Nous redirigeons le produit de la commande " SET" vers le fichier Sortie.txt, mais en désactivant toute sortie-écran.
L'utilisation de la commande " SET" sera expliquée plus loin.
3 – Liste des commandes :
Dans la rubrique suivante, nous détaillerons certaines commandes spécifiques. Il s’agit ici d’un aperçu rapide des
commandes existantes en batch.
Définit les fonctions qui modifient l'affichage, contrôlent le déplacement du curseur et réaffectent
ANSI.SYS
les touches.
Permet aux programmes d'ouvrir les fichiers de données qui se trouvent dans les répertoires
APPEND
spécifies, comme s'ils figuraient dans le répertoire en cours.
ARP
Affiche, ajoute, et supprime les informations arp des dispositifs du réseau.
ASSIGN
Permet d'assigner une nouvelle lettre à un lecteur
ASSOC
Affiche les associations de fichier.
AT
Programme une heure pour exécuter une commande.
ATMADM
Liste les connexions et adresses vu par Windows ATM call manager.
ATTRIB
Affiche et change les attributs de fichiers.
BATCH
Fichier qui exécute une série de commande.
BREAK
Active / désactive CTRL + C dispositif
CACLS
Affiche et modifie le fichier ACL.
CALL
Appelle un fichier batch à partir d'un autre fichier batch.
CD
Change de répertoire.
CHCP
Permet de changer le jeu de caractères.
CHDIR
Idem que CD.
CHKDSK
Vérifie que le disque dur en format FAT ne contient pas d'erreurs.
CHKNTFS
Vérifie que le disque dur en format NTFS ne contient pas d'erreurs.
La commande choice demande à l'utilisateur de saisir une des lettres proposées. La
CHOICE
récupération du choix se fait par la commande errorlevel.
5
CLS
Efface l'écran.
CMD
Ouvre la fenêtre de commande DOS.
COLOR
Change les couleurs de l'arrière-plan et de la police de la fenêtre
COMMAND
Idem que CMD
COMP
Compare des fichiers.
COMPACT
Compresse et décompresse des fichiers
CONTROL
Ouvrez les icônes de panneau de commande de la fenêtre DOS.
CONVERT
Converti du format FAT vers NTFS.
COPY
Copie un ou plusieurs fichiers vers une différente destination.
CTTY
Modifie les périphériques et d'entrées standards
DATE
Affiche ou modifie la date système.
Utilitaire permettant des programmes en assembleur afin de modifier les paramètres Hardware.
DEBUG
Debug utility to create assembly programs to modify hardware settings.
DEFRAG
Permet de défragmenter un disque dur.
DEL
Supprime un ou plusieurs fichiers.
DELETE
Idem que DEL.
DELTREE
Efface un ou plusieurs fichiers et/ou répertoires
DIR
Affiche la liste des fichiers et des sous-répertoires d'un répertoire.
DISABLE
Désactive les services ou drivers windows.
DISKCOMP
Compare les contenus de deux disquettes.
DISKCOPY
Copie le contenu d'une disquette sur une autre.
Modifie les lignes de commande, rappelle des commandes Windows, et permet de créer des
DOSKEY
macros.
Représente les répertoires et les fichiers sous forme d'icônes dans un environnement de menus
DOSSHELL
déroulants qui contiennent les principales commandes du système d'exploitation.
DRIVPARM
Redéfinit les paramètres d'un lecteur.
ECHO
Affiche des messages… l'écran ou active/désactive l'affichage des commandes.
EDIT
Affiche et édite des fichiers.
EDLIN
Idem que EDIT.
EMM386
Charge extended Memory Manager.
ENABLE
Désactive les services ou drivers windows
ENDLOCAL
Stoppe la localisation des modifications de l'environnement dans un fichier de commandes.
ERASE
Supprime un ou plusieurs fichiers.
EXIT
Quitte l'interpréteur de commandes (CMD.EXE).
EXPAND
Décomcodesse un fichier.
EXTRACT
Utilitaire de décomcodession des fichiers archives cab de windows 95.
FASTHELP
Affiche des informations sur les commandes de Windows.
6
FC
Compare deux fichiers ou groupes de fichiers, et affiche les différences entre eux..
FDISK
Configurer / partitionner un disque dur.
FIND
Cherche une chaîne de caractères dans un ou plusieurs fichiers.
FINDSTR
Cherche des chaînes de caractères dans un ou plusieurs fichiers.
FIXBOOT
Ecrit un nouveau secteur de boot.
FIXMBR
Ecrit un nouveau secteur de boot sur un lecteur..
FOR
Exécute une commande sur chaque fichier d'un groupe de fichiers.
FORMAT
Formate un disque pour utilisation avec Windows.
FTP
Commande pour se connecter et opérer sur un serveur FTP.
FTYPE
Affiche ou modifie les types de fichiers utilisés dans les associations d'extensions.
GOTO
Poursuit l'exécution d'un fichier de commandes à une ligne identifiée par une étiquette.
GRAFTABL
Permet à Windows d'afficher un jeu de caractères en mode graphique..
HELP
Affiche des informations sur les commandes de Windows.
IF
Effectue un traitement conditionnel dans un fichier de commandes.
IFSHLP.SYS
Gestionnaire de fichier 32-bit.
IPCONFIG
Commande réseau pour voir / configurer les paramètres réseau.
KEYB
Charger un pilote de clavier.
LABEL
Créé modifie ou supprime le nom de volume d'un disque.
Charge un programme en zone de mémoire supérieure, ce qui libère de la mémoire
LH
conventionnelle pour d'autres programmes.
LISTSVC
Affiche tous les services, pilotes et types de démarrage.
LOADFIX
Charge un programme sur les codemiers 64k.
LOADHIGH
Charge un programme résident dans la mémoire supérieure.
LOCK
Verrouille l'accès à un disque par une application
Cette commande affiche les installations de Windows et de Windows NT détectées, et demande
le mot de passe de l'administrateur local pour la copie de Windows à laquelle vous souhaitez
LOGON
vous connecter.
NB: Au bout de 3 échecs, la console s'arrête et l'ordinateur redémarre...
MAP
Affiche le nom d'un lecteur.
MD
Crée un répertoire.
MEM
Affiche la mémoire du système.
MKDIR
Crée un répertoire.
MODE
Configure un périphérique du système.
MORE
Affiche la sortie écran par écran.
MOVE
Déplace un ou plusieurs fichiers d'un répertoire à un autre.
MSAV
Microsoft anti-virus.
MSD
Utilitaire de Diagnostics.
MSCDEX
Utilitaire permettant d'utiliser, de charger et accéder à un CD-ROM.
7
NBTSTAT
Mise à jour du cache du fichier Lmhosts
NET
Mettre à jour, réparer, ou voir le réseau et les paramètres réseau.
NETSH
Configure les informations d'un réseau dynamique et statique.
NETSTAT
Afficher les statistiques de protocole et l'état actuel des connexions NetBIOS sur TCP/IP
NLSFUNC
Charge un jeu de caractère spécifique.
NSLOOKUP
Permet de tester un serveur DNS.
PATH
Affiche ou définit le chemin de recherche des fichiers exécutables.
Outil de trace qui combine les caractéristiques du ping et de tracert avec des informations
PATHPING
additionnelles qu'aucune de ces 2 commandes ne fournit.
PAUSE
Interrompt l'exécution d'un fichier de commandes et affiche un message
PING
Affiche les informations de connexion à une autre machine.
POPD
Restaure la valeur précédente du répertoire courant enregistré par PUSHD.
POWER
Conservez la puissance d'un ordinateur portable.
Imprime un fichier texte.
PROMPT
Modifie l'invite de commande de Windows.
PUSHD
Enregistre le répertoire courant puis le modifie.
QBASIC
Ouvre QBasic.
RD
Supprime un répertoire vide.
REN
Renomme un ou plusieurs fichiers.
RENAME
Renomme un ou plusieurs fichiers.
RMDIR
Supprime un répertoire vide.
ROUTE
Manipule les tables de routage du réseau
RUNAS
Autorise un utilisateur à exécuter un programme un autre ordinateur.
SCANDISK
Lance l'utilitaire scandisk.
SCANREG
Scanne et restaure la base de registre.
SET
Affiche, définit ou supprime des variables d'environnement Windows.
SETLOCAL
Commence la localisation des changements de l'environnement dans un fichier de commandes.
SETVER
Définit le numéro de version que MS-DOS fournit à un programme.
Permet de verrouiller les fichiers lorsqu'ils peuvent être accédés par plusieurs programmes en
SHARE
même temps
SHIFT
Modifie la position des paramètres remplaçables dans un fichier de commandes.
SHUTDOWN
Éteint l'ordinateur.
SMARTDRV
Crée un cache disque dans la mémoire étendue.
SORT
Trie les éléments en entrée.
START
Lance une fenêtre pour l'exécution du programme ou de la commande.
SUBST
Affecte une lettre de lecteur à un chemin d'accès.
SWITCHES
Configure le clavier étendu.
8
SYS
Transférer les fichiers système vers un lecteur.
TELNET
Telnet vers un autre ordinateur / système.
TIME
Affiche ou définit l'heure de l'horloge interne du système.
TITLE
Définit le titre de la fenêtre MS-DOS.
TRACERT
Permet de voir le chemin parcouru entre votre poste et l'ordinateur qui héberge le site
TREE
Représente graphiquement l'arborescence d'un lecteur ou d'un chemin.
TYPE
Affiche le contenu d'un fichier texte.
UNDELETE
Récupère un fichier qui a été effacé.
UNFORMAT
Annule un formatage.
UNLOCK
Unlock un disque dur.
VER
Affiche le numéro de version.
Indique à Windows s'il doit ou non vérifier que les fichiers sont écrits correctement sur un disque
VERIFY
donné.
VOL
Affiche le nom et le numéro de série du volume.
XCOPY
Copie des fichiers et des arborescences de répertoires.
Pour de plus ample détail sur chacune de ses commandes, consulter l’aide en ligne de commande. Pour cela, il suffit d’écran
la commande exemple : DEL /?
Et l’aide s’affiche :
9
4 – Les commandes spécifiques :
ECHO ON/OFF
Permet d'activer / désactiver l'affichage des commandes qui sont exécutées. Par défaut, c'est la commande ECHO ON qui
est utilisée. L'utilisation de l'arobase permet de biffer le statut de la commande " ECHO". Par ailleurs, la commande "Echo off" évite l'affichage des commandes contenues dans le script.
@echo off
ECHO Bonjour
@echo on
ECHO message
Permet l'affichage du message. MS-DOS n'est pas sensible pour les commandes à la différence entre les majuscules et les
minuscules, que vous écriviez echo ou Echo, ou bien encore ECHO ou EcHo, le résultat sera le même. N'utilisez pas d'accent,
car MS-DOS va remplacer les caractères accentués par des