|
Fonctions
Les fonctions dans les scripts permettent d'augmenter considérablement les possibilités des batchs.
La fonction étiquette permet d'intervenir sur le séquencement, typiquement votre script va exécuter les commandes les une à la suite des autres. Pour casser tout ça les étiquettes permettent d'accédées directement à un endroit du script.
Ce script va afficher salut à l'infini, grâce à la boucle formée avec le saut qui fait un retour sur la directive :boucle.
La fonction If permet de définir une condition, ainsi il est possible de définir une comparaison qui fera accepter ou non la condition.
Structures de la commande:
Exemple:
L'ajout du paramètre /i permet d'ignorer la casse.
Les comparants utilisables sont:
EQU - égal à
NEQ - différent de
LSS - inférieur à
LEQ - inférieur ou égal à
GTR - supérieur à
GEQ - supérieur ou égal à
Il est possible de comparer des chaînes de caractères ou bien des chiffres.
Exemple :
Avec des SI ont pourrait mettre Paris en bouteille, démontrons que cela est possible.
echo off
cls
rem défini le point de retour
:boucle
rem définit une variable incrémentée de 1 à chaque passage
set /a count = count + 1
rem affiche la variable à chaque passage
echo %count%
rem SI %count% est égal à 10 alors aller au saut :fin
if %count%==10 goto fin
goto boucle
:fin
rem Insertion d'une une variable
echo Grace a des SI on mis %count% fois Paris en bouteille
pauseRésultat:
Ici nous avons donc utilisé les SI afin de créer une condition pour sortir de la boucle.
Il est possible en batch de faire des tests sur des fichiers
Test sur l'existence d'un fichier
echo off
cls
rem défini le point de retour
:boucle
rem définit une variable incrémentée de 1 à chaque passage
set /a count = count + 1
rem affiche la variable à chaque passage
echo %count%
rem SI %count% est égal à 10 alors aller au saut :fin
if %count%==10 goto fin
goto boucle
:fin
rem Insertion d'une une variable
echo Grace a des SI on mis %count% fois Paris en bouteille
pause
Test sur la non-existence d'un fichier
Comme son nom l'indique elle permet de faire un choix est d'être redirigé vers un saut.. Mais un exemple sera plus concret
Attention la fonction CHOICE n'est pas disponible sur le système de base de Windows XP, pour résoudre ce problème il suffit d'installer Powerbatch il installe la commande en même temps que son programme.
Echo off
:debut
cls
Echo Question: Quelle est la capitale de la suède ?
Echo .
Echo Réponse a: Olso
Echo Réponse b: Stokholm
Echo Réponse c: Reykjavik
Echo q: Quitter
rem la commande choice utilise une liste de paramètres ici abcq qui font
rem référence à 4 niveau d'erreur a fait référence au 1
CHOICE /C:abcq Faites votre choix
IF %ERRORLEVEL%==1 goto a
IF %ERRORLEVEL%==2 goto b
IF %ERRORLEVEL%==3 goto c
IF %ERRORLEVEL%==4 goto q
:a
cls
echo Perdu ! la capitale de la suède n'est pas Olso mais Stokholm
GOTO Fin
:b
cls
echo Gagné ! la capitale de la suède est bien Stokholm
GOTO Fin
:c
cls
echo Perdu ! la capitale de la suède n'est pas Reykjavik mais Stokholm
GOTO Fin
:Fin
pause
goto debut
:q
Cette fonction for permet de pouvoir parcourir un ensemble de lignes dans un fichier, et d'éxécuter des actions pour l'élément parcouru.
Structure simple:
On peut noter que les variables utilisées ici, ne sont pas de la forme %var%, mais de la forme %%a.
Exemple:
@echo off
del temp.txt
rem création d'un fichier
echo 1 >> temp.txt
echo 2 >> temp.txt
echo 3 >> temp.txt
echo 4 >> temp.txt
echo 5 >> temp.txt
rem visualisation du contenu
echo le fichier temp.txt contient les lignes suivantes:
more temp.txt
echo.
echo Pour chaque ligne du fichier afficher son contenu
FOR /f %%i IN (temp.txt) DO (
echo ligne %%i
)
pause
Structure "complèxe":
Dans cette exemple nous ajoutons deux paramètres:
Tokens: Ce paramètre indique que la variable %%a prendra la deuxieme colonne du fichier c:\data.txt.
Delims: Ce paramètre indique que le délimiteur est la virgule, ce séparateur démilite en faite les colonnes du fichier c:\data.txt.
Pour pouvoir intérroger chaque colonne d'un fichier il faut modifier le paramètres "token". Si "tokens=1,2" alors un "echo %%a" ramera la valeur de la première colonne et un "echo %%b" ramenera la valeur de la deuxième colonne.
Grâce aux batchs il est possible à l'intèrieur d'un fichier texte de faire une recherche, à la fois sur une ligne et sur une colonne.
Tout d'abord il est préférable d'utiliser des fichiers possédant des séparateurs simples, comme par exemple les fichiers .cvs avec le délimiteur virgule.
Fichier: c:\data.csv
1,pierre,martin
2,antoine,dupont
3,marcel,roger
4,thomas,froger
5,marie,simon
6,lea,robert
7,ines,bertrand
8,kenza,fournier
9,laure,richard
Sélection d'une ligne:
find "4" c:\data.csv
pause
Grâce à au find nous avons sélectionné la ligne numéro 4.
Sélection d'une colonne:
A l'aide, de la fonction FOR il est possible de sélectionner une colonne au sein d'un fichier avec délimiteur.
Il est possible avec la fonction FOR d'éxécuter plusieurs commandes dans le do, en intégrant des parenthèses après le DO.
Avec ce batch nous pouvons afficher la 2ème colonne du fichier don les réparateurs sont des ","
Combinaison des deux:
@echo off
rem définition de la variable var qui définie la place recherchée
set /p var=Quelle place cherchez-vous (1-9)?
rem enregistre dans le fichier tmp.txt la ligne contenant le numéro indiqué
find "%var%" c:/data.csv >> tmp.txt
rem dans le fichier tmp.txt sélection de la colonne 2 à 3, la colonne 2 %%i
rem la colonne 3 %%j
FOR /f "tokens=2-3 delims=," %%i in (tmp.txt) do @echo le numéro %var% est %%i %%j
del tmp.txt
pause
La création d'un compteur peut être très utile dans certaines situations, par exemple d'un compteur afin de temporiser. Ce dernier aura pour effet de retarder certaines commandes.
Il s'agit de créer une boucle à l'aide d'une étiquette incrémentant une variable ici %count%
En jouant sur le seuil de déclenchement, ici "1000" nous pouvons faire varier la durée de la temporisation.
Si vous possédez Windows Vista vous pouvez directement utiliser la commande timeout
Découvrons désormais les paramètres, ce sont en fait des variables que nous pouvons que l'utilisateur peut introduire à l'éxécution du script. Mais voyons cela avec un exemple simple.
Ce micro script permet grâce à la variable %1 de récupérer le premier mot passé en paramètre au script. Comme vous l'aurez deviné %2 et le deuxième paramètre au script.
Mais regardons plutôt le résultat:
Et voilà rien de compliquer, mais cette fonction peut s'avérée utile dans certaines situations.
Une question, une remarque, n'hésitez pas à visiter le forum |
Haut de page |