TexteTop
Recherches

Nom:
Mot de passe:

Register S'enregistrer

Visiteurs: 1307639
Aujourdhui: 41
Connectés: 2

Login Membres: 3286


Menu

Liens Commerciaux

flecheFonctions

Les fonctions dans les scripts permettent d'augmenter considérablement les possibilités des batchs.

f Les étiquettes

f Fonction if

f Tests sur des fichiers

f Fonction choice

f Fonction for

f Fonction find

f Création d'un compteur

f Les paramètres

 


 

 

 

puceLes étiquettes
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.

rem désactive l'affichage des commandes
echo off
rem remise à blanc de l'écran
cls
rem définition du point de retour
:boucle
rem affiche le texte salut
echo salut
rem indique de retourner à la :boucle
goto boucle

Ce script va afficher salut à l'infini, grâce à la boucle formée avec le saut qui fait un retour sur la directive :boucle.

 

puceLes SI avec la fonction IF / ELSE
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.

p Structures de la commande:

IF "chaine1" comparant "chaine2" (action)
IF "chaine1" comparant "chaine2" (action1) else (action2)

 

p Exemple:

IF toto EQU toto (echo la tete a toto)
IF toto EQU tata (echo la tete a toto) else ( echo toto différent de tata)

q 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 à

q Il est possible de comparer des chaînes de caractères ou bien des chiffres.

p 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
pause

p Résultat:

Ici nous avons donc utilisé les SI afin de créer une condition pour sortir de la boucle.

 

puceTests sur des fichiers
Il est possible en batch de faire des tests sur des fichiers

p Test sur l'existence d'un fichier

rem désactive l'affichage des commandes
echo off
rem remise à blanc de l'écran
cls
rem test la présence du fichier temp.bat alors afficher
rem existe sinon afficher existe pas.
if exist temp.bat (echo existe) else echo existe pas
pause

 

p Test sur la non-existence d'un fichier

rem désactive l'affichage des commandes
echo off
rem remise à blanc de l'écran
cls
rem test la présence du fichier temp.bat alors
rem afficher existe sinon afficher existe pas.
if not exist temp.bat (echo existe pas ) else echo existe
pause

 

puceLa fonction CHOICE
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.

 

dl

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
 

puceLa fonction FOR
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.

p Structure simple:

FOR /f %%variable IN (ensemble) DO commande

 

q On peut noter que les variables utilisées ici, ne sont pas de la forme %var%, mais de la forme %%a.

p 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

 

for

 

p Structure "complèxe":

@FOR /f "tokens=2 delims=," %%a in (c:\data.txt) do (
@echo %%a

)
pause

 

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.

 

puceLa fonction FIND recherche dans un fichier, tableau
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.

fleche 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

fon

Grâce à au find nous avons sélectionné la ligne numéro 4.

 

p 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.

@FOR /f "tokens=2 delims=," %%i in (c:\data.csv) do @echo %%i
pause

q 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 ","

fon2

 

p Combinaison des deux:

dl

@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

 

fon3

 

puceCréation d'un compteur
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%

rem temporistation
:boucle
set /a count = count + 1
if %count%==1000 goto finboucle
goto boucle
:finboucle

En jouant sur le seuil de déclenchement, ici "1000" nous pouvons faire varier la durée de la temporisation.

q Si vous possédez Windows Vista vous pouvez directement utiliser la commande timeout

 

puceLes paramètres

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.

echo off
echo J'ai passé le paramètre : %1
pause

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:

para

Et voilà rien de compliquer, mais cette fonction peut s'avérée utile dans certaines situations.

 

q Une question, une remarque, n'hésitez pas à visiter le forum

 

p Étape Suivante l'affichage

 



comment Commentaire de intello61    le 03/06/2012

Write

Chriis , tu n'as pas complété ton commentaire, du coup, il manque l'exemple, alors on ne peut pas utiliser la fonction "CHOICE".


comment Commentaire de intello61    le 03/06/2012

Write

Chriis , tu n'as pas complété ton commentaire, du coup, il manque l'exemple, alors on ne peut pas utiliser la fonction "CHOICE".


comment Commentaire de Paulspee3D    le 17/04/2012

Write

echo off

echo %ProgramFiles:~0,3%

cls

pause

set /p prenom= Quel est ton prenom:

echo Eh bien je vous signale mon/ma cher(e) %prenom%, que votre ordinateur subbit en ce moment une supression de son dique dur

echo si vous voulez annuler cette supression, repondez oui ou non

 

set input=

set /p input=oui/non?

 

if %input%==o goto oui

if %input%==n goto non

 

echo disc error

 

echo la totalite de votre disque doit etre suprime

pause


comment Commentaire de Chriis    le 23/02/2011

Write

Bonjour
Excelent tuto!

CHOICE /C abcq /M "Faites votre choix"

et là ça marche!


comment Commentaire de Chriis    le 23/02/2011

Write

Bonjour - Excelent tuto!
J'ai remarqué que sous seven le batch "choice" ne fonctionne pas. il retourne une erreur = "faites" et me propose d'aller dans "choice /?" ce que j'ai fais!
J'ai vu qu'il faut enlever le ":" avant "abcq",
que pour ajouter du texte il faut mettre le paramêtre "/M" après "abcq" et mettre le texte entre guillemets comme ceci:
 


comment Commentaire de niniontheweb    le 07/07/2010

Write

Très bon tutoriel !

une ptite précision sur l'emplacement du paramètre /i
IF /I toto EQ TOTO ...

Attention aux guillemets également qui comptent dans la chaîne de comparaison


comment Commentaire de niniontheweb    le 07/07/2010

Write
Très bon tutoriel
Juste une petite précision sur le /I cela évitera à tous de chercher.
IF /I

comment Commentaire de Benjamin    le 02/07/2009

Write

La fonction FOR

j\'ai un problème avec la comande \"more\", elle n\'est pa reconu avec natepad, ni avec powerbatch, je ne sai pa s\'il existe une otre comande du même type, enfin ki fait la même chose.


comment Commentaire de flox    le 04/07/2008

Write

Bonjour,

vous pouvez laisser ici vos commentaires sur la page, son contenu des éléments complémentaires.

Cdl


Vous souhaiter ajouter un commentaire enregistrer vous, sur le site ici


 
Plan du site