Après une première série consacré aux rudiments du MS-DOS, nous allons aborder une structure plus complexe des fichiers bath, avec un menu, la possibilité de les lancer à un moment donné, et l'appel à des greffons Pour cela, nous utiliserons majoritairement des commandes pour windows XP et parfois NT et ME : at, title, color, ainsi que les nouveautés de la commande set.
I. Création du menu et personnalisation
a) Un menu avec Set, les tags et If
b) Exemple de menu pour la date et l'heure
c) Les commandes title et color pour personnaliser
II. Executer notre batch selon l'heure
a) La commande At de tâches planifiées
b) Connaître le path
III. L'appel à des greffons
a) Appeller un programme ou le lancer
b) Transmission des paramètres
I. Création du menu et personnalisation
a) Un menu avec Set, les tags et If >>
vers le sommaire
Sous Windows 98 et quelques autres anciens, il était possible d'utiliser
une commande nommée Choice. Elle a disparue sous XP mais en échange,
la commande Set a reçue de nouvelles options. Alors que Choice était
largement suffisante pour une question simple, à oui ou non, on se
retrouve à faire tourner une usine à gaz...
Créez votre programme en tapant le code suivant :
Touche F6
C:
Cd\
copy con Aqualonne.bat
@Echo off
Cls
:Menu
Echo 1. Quitter le programme
Echo 2. A propos de...
set choix=
set/p choix=Entrez votre choix.
if '%choix%'=='1' goto fin
if '%choix%'=='2' goto apropos
Echo Choix non valide.
goto Menu
:apropos
Echo Programme implementant un menu.
goto Menu
:fin
Si vous avez fait une erreur, soit sous Windows faites un clic
droit sur le programme et prenez "modifier", soit sous dos entrez
Edit Aqualonne.bat
afin d'avoir
accès à l'éditeur, puis sauvegardez. Examinons maintenant
ce programme : vous savez que C:
suivi de Cd\
va nous positionner
à la racine de la partition C, et que copy
con Aqualonne.bat
va créer un fichier batch du nom d'Aqualonne.
Nous réexploitons aussi Echo
et Cls
vus dans la partie
précédente. A présent, les nouveautés :
- Le programme peut-être structuré avec des tags, comme :Menu
et :apropos. Les : permettent de définir le nom qui suit en tant que
tag. Une structure efficace est celle qui se termine par :fin (ou :eof, pour
End Of File).
- Pour naviguer d'un endroit à un endroit, on utilise la commande goto
(signifiant "aller à") qui permet de se positionner à
un tag.
En exploitant ceci, essayez de prédire le fonctionnement
du code ci-dessous :
:Menu
goto Suite
:Milieu
goto Menu
:Suite
goto Milieu
:fin
Vous voyez que le programme passe au tag Suite, puis au tag Milieu, et revient au tag Menu. Il va donc fonctionner en boucle, et n'arrivera jamais à la fin. Si vous l'éxécutez, pour le fermer il suffit d'appuyer sur Ctrl+C : cette touche demande la fermeture immédiate d'un programe en mode console. A présent, la commande set.
Elle permet d'utiliser des variables : set
choix=
déclare la variable. Le commutateur /p fait apparaître
un message et initialise la variable à la réponse de l'utilisateur.
Voici un exemple :
set exemple=
set/p exemple=Entrez la valeur de la variable.
On déclare une variable nommée "exemple"
et on affiche à l'utilisateur le message "Entrez la valeur de
la variable", sa réponse étant stockée dans exemple.
Après, il faut exploiter cette valeur par exemple avec des tests ;
if
est le plus courant, il signifie
"si cette condition est vérifiée, alors on fait cette opération".
Un exemple :
set reponse=
set/p reponse=Souhaitez-vous poursuivre ce tutorial ? (o/n)
if '%reponse%'=='o' Echo C'est gentil pour moi qui l'ecrit...
if '%reponse%'=='n' Echo Tant pis...
b) Exemple de menu pour la date et l'heure >> vers le sommaire
A partir de ce que nous avons vu précédemment,
voici le code du fichier batch :
@Echo off
Cls
:Menu
Echo 1. Afficher l'heure
Echo 2. Afficher la date
Echo 3. Quitter
set choix=
set/p choix=Entrez votre choix.
if '%choix%'=='1' goto heure
if '%choix%'=='2' goto date
if '%choix%'=='3' goto fin
Echo Choix non valide.
goto Menu
:heure
Time/T
goto Menu
:date
Date/T
goto Menu
:fin
Nous avons structuré un programme avec trois possibilités
: afficher l'heure, la date, ou quitter. On utilise donc des tags selon le
choix de l'utilisateur. Quelques détails sur les deux commandes que
nous introduisons :
- La commande Date
s'utilise soit
de deux manières. Soit en la tapant directement, et alors l'ordinateur
demande la nouvelle date (vous pouvez appuyer sur entrée pour conserver
l'actuelle), soit avec le commutateur /T pour simplement l'afficher.
- La commande Time
fonctionne de
même. En la tapant directement on demande la nouvelle date (appuyer
sur entrée pour conserver l'actuelle), et avec le commutateur /T on
réalise uniquement l'affichage.
b) Les commandes title et color pour personnaliser >> vers le sommaire
Avec windows XP, on a eu une nouveauté plutôt gadget,
mais autant en parler puisqu'elle existe. Il s'agit des commandes permettant
de modifier l'aspect de la fenêtre de commande. La première est
Title
qui change le nom de la fenêtre
dans celui précisé par l'utilisateur, par exemple :
Title Dossier
Si vous utilisez le signe = entre la commande et le nom a spécifier,
cela n'aura aucune incidence. Title=dossier
est équivalent à Title = dossier
ou Title dossier
.
L'autre commande est Color
qui définit à l'aide de deux chiffres héxadécimaux
les couleurs de premier puis d'arrière-plan. L'exemple suivant donne
un fond blanc et des caractères pourpres :
Color F5
Les couleurs possibles sont celles de la table suivante :
Couleur
|
Indice
|
Couleur
|
Indice
|
Couleur
|
Indice
|
Couleur
|
Indice
|
Noir
|
0
|
Marron
|
4
|
Gris
|
8
|
Rouge
|
C
|
Bleu foncé
|
1
|
Pourpre
|
5
|
Bleu clair
|
9
|
Rose
|
D
|
Vert
|
2
|
Kaki
|
6
|
Vert clair
|
A
|
Jaune
|
E
|
Bleu-gris
|
3
|
Gris clair
|
7
|
Cyan
|
B
|
Blanc
|
F
|
Pour rétablir la couleur au lancement de la console (en
général fond noir et lettres en gris clair), il faut suffit
de taper la commande Color
sans
aucun paramètre. Enfin, une possibilité pour utiliser ces gadgets
pourrait-être de se démarquer quand on utilise notre batch ;
voici le code à taper pour créer le batch qui nous intéresse
:
C:
Cd\
copy con Running.bat
@Echo off
Cls
Title Aqualonne v1.0 is running
color 1B
pause
Title Invite de commandes
color 07
Ce programme aura pour effet de donner comme nom à la console "Aqualonne v1.0 is running" en lettres bleu foncé sur bleu clair, puis de rétablir la configuration type à la fermeture du programme.
II. Executer notre batch selon l'heure
a) La commande AT de tâches planifiées >> vers le sommaire
At
est encore une
de ces nouvelles commandes qu'on trouve dans windows NT, 2000 ou XP. Elle
permet de demander le lancement d'une application à des dates et heures
données. A chaque fois qu'on lui formule une demande, le programme
attribue à celle-ci une ID (code d'identification) ; si c'est la première,
elle aura pour ID 1. Dès que la tâche a été éxécutée,
l'ID est automatiquement détruite ; il n'y a pas glissement : si l'ID
1 est détruite, l'ID 2 reste 2.
Si au moment où la commande doit s'éxécuter
vous pensez travailler sur l'ordinateur, alors utilisez le commutateur /INTERACTIVE
.
Imaginons que l'heure de votre ordinateur (faites TIME
/T
) soit 18:35, et que le programme Running.bat soit à
la racine du disque C, voici la commande qui l'éxécutera deux
minutes plus tard :
at 6:37PM /INTERACTIVE "c:\running.bat"
L'heure doit-être donnée aux normes anglaises. Par-exemple, 18:35 est 6:35 de l'après-midi, donc on marque 6:35PM. De même que PM représente l'après-midi (Post-Morning), AM représente la matinée ; si vous ne mettez rien, le type AM est appliqué par défaut.
Certains programmes peuvent-être lancés sans avoir
à préciser leur chemin, par exemple s'il est 18:39 :
at 6:40PM /INTERACTIVE "calc"
Vous verrez la calculette se lancer une minute plus tard. Notons
que lorsque vous avez entré la commande At
,
l'ordinateur vous repond "Tâche ajoutée avec ID = 1"
ou une ID supérieure si d'autres tâches étaient programmées.
Vous pouvez demander l'ordinateur à quoi correspond l'ID en tapant
At 1
pour interroger l'ID 1. La
réponse est alors la suivante (n'oubliez pas que si la tâche
a été éxécutée, l'ID a disparue) :
ID tâche : 1
Etat : OK
Calendrier : Aujourd'hui
Heure du jour : 18:39 PM
Interactive : Oui
Commande : calc
Notons toutefois que 18:39 PM ne correspond pas à grand
chose, mais la traduction a été hasardeuse... Concernant la
suppression de tâches planifiées, si vous voulez détruire
l'opération associée à l'ID 1, tapez At
1 /delete
. Pour détruire toutes les tâches planifiées,
vous pouvez utiliser at /delete /yes
.
Enfin, vous avez deux commutateurs /NEXT
et /EVERY
qui signifient que la
tâche se lancera le prochain jour indiqué ou tous les jours indiqués.
Leur structure est la même : le commutateur doit être suivi de
: puis du jour concerné, donné soit en chiffre (par exemple
3 pour le 3ème jour du mois) soit en lettres. Voici deux exemples :
at 6:40PM /INTERACTIVE /EVERY:5 "c:\running.bat"
at 6:40PM /INTERACTIVE /NEXT:5 "c:\running.bat"
Si vous voulez donner le nom du jour plutôt que le nombre,
utilisez le tableau suivant :
Jour concerné
|
Lundi
|
Mardi
|
Mercredi
|
Jeudi
|
Vendredi
|
Samedi
|
Dimanche
|
Origine
|
Monday
|
Tuesday
|
Wednesday
|
Thursday
|
Friday
|
Saturday
|
Sunday
|
Indicatif pour le commutateur
|
m
|
t
|
w
|
th
|
f
|
s
|
su
|
Par exemple, si vous voulez lancer le programme tous les samedi
à 10h du soir vous taperez :
at 10:00PM /INTERACTIVE /EVERY:s "c:\running.bat"
b) Connaître le path >> vers le sommaire
Si certains programmes peuvent-être lancés sans
avoir à spécifier leur emplacement, c'est parce qu'ils sont
dans le path. Qu'est-ce que le path ? Un ensemble de répertoires où
le MS-DOS va chercher ses programmes par défaut. Ainsi, pour ne pas
avoir à spécifier l'emplacement de running.bat, nous n'avons
qu'à le placer dans le path. Pour connaître les répertoires
qui y sont affiliés, deux possibilités : soit taper path
,
soit taper set
et lire la ligne
Path=. La commande set
est plus
intéressante puisqu'elle nous donne tous les renseignements sur les
variables d'environnements ; par exemple, votre nom d'utilisateur, l'endroit
où est stocké votre profil, le nombre de processeurs et l'architecture..
Vous verrez donc une ligne de ce type :
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Ce qui signifie que les programmes se trouvant dans ces trois répertoires seront trouvés si on donne uniquement leur nom. Par ailleurs, s'il y a plusieurs fichiers du même nom dans les path mais pas de la même extension, le MS-DOS applique un ordre de priorité : d'abord les fichiers .COM, puis les .EXE, et enfin les .BAT.
Conclusion de la partie.
Vous devez maintenant pouvoir copier des fichiers avec COPY,
en détruire avec DEL, et renommer des
fichiers ou des répertoires avec RENAME.
Bref, vous savez la plupart des choses à utiliser dans un futur programme
d'installation.
a) Appeller un programme ou le lancer >> vers le sommaire
Le lancement d'un programme à partir d'un autre peut-être
considéré de deux façons, selon qu'une fois le programme
finit, la suite du code se poursuive ou non dans le programme d'origine. C'est-à-dire
qu'on veut savoir, après l'appel du programme, qui prend la main. Sachant
que vous êtes à la racine du disque C où se trouve le
fichier running.bat, voici un code :
@Echo off
Cls
Echo chargement du module externe.
pause
running
Echo Chargement effectue.
En tapant ce code et en executant le batch qui en resulte, vous
vous apercevrez que le message "Chargement effectue." ne s'affiche
pas. Pourquoi ? La suite de vos actions va dans le programme running, mais
ne revient pas. Pour continuer le script une fois le programme appelé
finit, il faut utiliser la commande call
:
@Echo off
Cls
Echo chargement du module externe.
pause
Call running
Echo Chargement effectue.
a) Transmission des paramètres >> vers le sommaire
Voici le code d'un fichier nom.bat :
@Echo Off
Echo Identifiant %1
Echo Le client est %2 age de %3 ans
Lorsque le fichier nom sera utilisé, vous pourrez lui
donner trois arguments. Par exemple, nom GH39 Jean 23. Ceci va envoyer au
programme les valeurs des arguments 1, 2, et 3. Ce schéma se répète
sans problème ; vous pouvez par exemple utiliser d'autres paramètre
%4 et %5 correspondants à sa ville de naissance et à son statut
(célibataire, marié, pacsé, veuf...). Maintenant, voici
le code du fichier script.bat qui va utiliser nom.bat :
@Echo Off
Cls
Call nom GH39 Jean 23
Echo Ce client a ete ajoute a notre liste.
Ce script va faire appel à nom.bat tout en lui transmettant
la série d'arguments nécessaire. Nous verrons dans le tutorial
suivant comment stocker la liste des utilisateurs en memoire...
Avec toutes ces nouvelles notions, vous allez pouvoir créer un programme d'une part plus complexe, mais aussi graphiquement plus original avec son titre et ses couleurs. L'idée de rajouter des clients a une liste sera le fil conducteur de la première partie du tutorial suivant.
Si vous avez des questions, n'hésitez pas à me contacter.