16
SYSTEMES D’EXPLOITATION /H.MACHHOUR 1 1ere année BTS-DSI Introduction aux fichiers BATCH Introduction aux fichiers BATCH Sommaire 1. Introduction......................................................................................................................................... 2 2. Principales Commandes ..................................................................................................................... 2 3. Mon premier Script ............................................................................................................................ 5 4. Les Variables ....................................................................................................................................... 6 5. Fonctions .............................................................................................................................................. 9 6. Les paramètres .................................................................................................................................. 16 7. Affichage ............................................................................................................................................ 16 8. Exemples ............................................................................................................................................ 20 SYSTEMES D’EXPLOITATION /H.MACHHOUR 2 1ere année BTS-DSI Introduction aux fichiers BATCH 1. Introduction Dans ce cours, vous pourrez apprendre comment créer des scripts batch. Vous découvrirez comment, à l'aide d'un simple éditeur de texte il est possible d'aller assez loin. Mais qu'est ce que sont les Batchs: Un fichier batch est, sous le système d'exploitation Windows, un fichier (ou script) contenant une série d'instructions MS-DOS . Ces fichiers, lorsqu'ils sont lancés, exécutent les commandes contenues dans le fichier. Ces commandes sont alors interprétées par les exécutables cmd.exe et command.com. Vous pourrez donc apprendre à "batcher" en plusieurs étapes, tout d'abord connaître les différentes commandes. Puis crée son premier batch, ensuite vous pourrez sophistiquer vos batch en intégrant des fonctions des variables des paramètres et enfin personnaliser l'affichage. 2. Principales Commandes Dans cette partie nous allons voir les différentes commandes utilisables sous MS - DOS, ainsi que leurs fonctionnalités, ces dernières constitueront une ligne de nos futurs batch. Ces Commandes peuvent être exécuté dans une invite MS-DOS sous XP par exemple dans le menu (Démarrer->Les Programmes-> les Accessoires -> Invite de commande). Commandes de bases Commande Fonction Exemple CD Permet de se déplacer d'un répertoire à un autre. c> cd dossier CD \ Permet d'acceder à la racine d'un lecteur DIR Liste le contenu du répertoire courant. c> dir MKDIR Création d'un dossier. c>mkdir dossier RMDIR Effacer un dossier. c>rmdir dossier COPY Copie des fichiers. c> copy toto.txt c:\toto.txt XCOPY Copie des fichiers et des répertoires. c> xcopy toto.txt c:\toto.txt DEL Effacer un fichier REN Renommer des fichier ren toto.txt tata.txt MOVE Déplace un fichier. EDIT Lance un éditeur de texte sous MS-DOS. c>edit toto.txt MORE Visualiser le contenu d'un fichier texte c> more toto.txt FORMAT Permet d'effacer le contenu d'un lecteur. c> format a: CLS Efface l'écran actuel c> cls FIND Recherche dans un fichier la ligne contenant une valeur c> find "Windows" c:\boot.ini CMD Ouvre la fenêtre de commande DOS. ECHO Affiche un message c> echo salut ECHO. Permet de sauter une ligne

Introduction au fichiers batch

Embed Size (px)

DESCRIPTION

M4 - Systeme D'exploitation

Citation preview

Page 1: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 1 1ere année BTS-DSI

Introduction aux fichiers BATCH

Introduction aux fichiers BATCH

Sommaire

1. Introduction ......................................................................................................................................... 2 2. Principales Commandes ..................................................................................................................... 2 3. Mon premier Script ............................................................................................................................ 5 4. Les Variables ....................................................................................................................................... 6 5. Fonctions .............................................................................................................................................. 9 6. Les paramètres .................................................................................................................................. 16 7. Affichage ............................................................................................................................................ 16 8. Exemples ............................................................................................................................................ 20

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 2 1ere année BTS-DSI

Introduction aux fichiers BATCH

1. Introduction

Dans ce cours, vous pourrez apprendre comment créer des scripts batch. Vous découvrirez comment, à l'aide d'un simple éditeur de texte il est possible d'aller assez loin.

Mais qu'est ce que sont les Batchs: Un fichier batch est, sous le système d'exploitation Windows, un fichier (ou script) contenant une série d'instructions MS-DOS. Ces fichiers, lorsqu'ils sont lancés, exécutent les commandes contenues dans le fichier. Ces commandes sont alors interprétées par les exécutables cmd.exe et command.com.

Vous pourrez donc apprendre à "batcher" en plusieurs étapes, tout d'abord connaître les différentes commandes. Puis crée son premier batch, ensuite vous pourrez sophistiquer vos batch en intégrant des fonctions des variables des paramètres et enfin personnaliser l'affichage.

2. Principales Commandes

Dans cette partie nous allons voir les différentes commandes utilisables sous MS - DOS, ainsi que leurs fonctionnalités, ces dernières constitueront une ligne de nos futurs batch.

Ces Commandes peuvent être exécuté dans une invite MS-DOS sous XP par exemple dans le menu (Démarrer->Les Programmes-> les Accessoires -> Invite de commande).

Commandes de bases

Commande Fonction Exemple

CD Permet de se déplacer d'un répertoire à un autre. c> cd dossier

CD \ Permet d'acceder à la racine d'un lecteur

DIR Liste le contenu du répertoire courant. c> dir

MKDIR Création d'un dossier. c>mkdir dossier

RMDIR Effacer un dossier. c>rmdir dossier

COPY Copie des fichiers. c> copy toto.txt c:\toto.txt

XCOPY Copie des fichiers et des répertoires. c> xcopy toto.txt c:\toto.txt

DEL Effacer un fichier

REN Renommer des fichier ren toto.txt tata.txt

MOVE Déplace un fichier.

EDIT Lance un éditeur de texte sous MS-DOS. c>edit toto.txt

MORE Visualiser le contenu d'un fichier texte c> more toto.txt

FORMAT Permet d'effacer le contenu d'un lecteur. c> format a:

CLS Efface l'écran actuel c> cls

FIND Recherche dans un fichier la ligne contenant une valeur c> find "Windows" c:\boot.ini

CMD Ouvre la fenêtre de commande DOS.

ECHO Affiche un message c> echo salut

ECHO. Permet de sauter une ligne

Page 2: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 3 1ere année BTS-DSI

Introduction aux fichiers BATCH

SORT Permet de trier une liste en fonction d'un critère.

PRINT Imprime le fichier spécifié c>print toto.txt

EXIT Ferme la fenêtre MSDOS

TYPE Affiche un fichier texte.

FC Comparaison de fichiers

Commandes réseaux

Commande Fonction

PING Effectue un test de connectivité sur une machine distante à utilisée avec une adresse IP. (exemple: c> ping google.fr)

IPCONFIG Permet de voir votre configuration réseau, adresse IP, DNS, serveur DHCP... (exemple: c> ipconfig ,ipconfig /all)

NESTAT Affiche leurs connexions active sur votre machine, port et protocole. (exemple: c> NETSTAT)

NET USE Connecte un lecteur réseau. (exemple: c>net use z: \\nompc\nompartage)

TRACERT Affiche les adresses de toutes les passerelles pour accédez à une destination (exemple: c> tracert google.fr)

ARP Permet de voir et de modifier la table ARP, correspondance MAC <-> IP des machines connectées sur le réseau.

TELNET Telnet sur une autre machine (exemple: c> telnet 192.168.0.1)

NET SEND Envoi un message sur une machine sur le réseau.(exemple: c> net send %computername% coucou)

NSLOOKUP Permet de faire une résolution DNS, l'exemple donne les IP de google (exemple: c> nslookup google.fr )

FTP Lance un module FTP permettant de faire des transfert de fichiers. (exemple: c> ftp 01net.com )

REXEC Exécute des commandes sur des hôtes distants exécutant le service REXEC. Rexec authentifie l'utilisateur sur l'hôte distant avant d'exécuter la commande spécifiée.

TFTP transfère les fichiers depuis et vers un ordinateur distant exécutant le service TFTP.

RUNAS Permet d'éxécuter une commande avec un compte utilisateur différent.

NET TIME Permet de pouvoir synchroniser l'horloge avec un serveur.

MODE Permet d'afficher des informations concerant les ports COM

NETSH Permet de configurer des interfaces réseaux.

Commandes utilitaires Windows

Commande Fonction

DEFRAG Permet de défragmenter un lecteur (exemple: c> defrag c:)

CHKDSK Permet de lancer un scandisk sur un disque dur

NET START Démarre un service windows (exemple: c> net start sharedaccess)

CLEANMGR Permet de faire un netoyage des disques durs.

CONVERT Convertit des volumes FAT en volumes NTFS

SCHTASKS Permet sous Windows XP à un administrateur de créer, supprimer, effectuer des

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 4 1ere année BTS-DSI

Introduction aux fichiers BATCH

requêtes, modifier, exécuter et mettre fin à des tâches planifiées sur un système local ou distant.

TASKKILL Permet sous Windows XP de mettre fin à une ou plusieurs tâches ou processus. Voir TASKLIST

TASKLIST Affiche la liste des applications et tâches ou processus associés actuellement activés sur un système à distance sous Windows XP

SHUTDOWN Arrête ou redémarre un ordinateur local ou distant.

BOOTCFG Configure, interroge ou modifie les paramètres du fichier boot.ini.

DISKPART Gère des disques, des partitions ou des volumes.

SYSTEMINFO Permet d'obtenire une foule d'information sur votre équipement.

TYPEPERF Affiche les données du compteur de performances dans la fenêtre de commande ou dans un format de fichier journal pris en charge.

DRIVERQUERY Recherche une liste de pilotes et de propriétés de pilotes.

MEM Affiche des informations concernant les zones de mémoire allouées, les zones de mémoire libre et les programmes actuellement chargés en mémoire dans le sous-système MS-DOS.

LABEL Les symboles ^ et & peuvent être utilisés dans les noms de volume.

AT planifie l'exécution de commandes

Commandes Diverse

Commande Fonction

CALL Appelle un fichier batch à partir d'un autre fichier batch.(exemple: c> ping google.fr)

COLOR Permet de modifier les couleurs de la fenêtre MS-DOS (exemple:color 0a affiche le texte en vert et le fond en noir)

HOSTNAME Affiche le nom de l'ordinatateur (exemple: c> hostname)

REG Permet de faire des interventions dans la base de registre.

TITLE Permet de renommer la fenêtre MS-DOS (exemple: c> title batcher!)

TREE Représente graphiquement un arborescence de répertoires (exemple: c>tree)

BREAK Active ou désactive le contrôle étendu de CTRL+C.

PROMPT Modifie l'invite de commande (exemple: c> prompt batcher! )

> Redirection remplacement (exemple: echo batcher! > temp.txt)

>> Redirection ajout (exemple: echo batcher! >> temp.txt)

Commandes pour les scripts

Commande Fonction

PAUSE Permet de stopper le traitement en cours en demandant à l'utilisateur de taper une touche pour continuer.

IF Instore une structure conditionnelle

FOR permet de crée des boucles

SET définition d'une variable %variable% pour la rappeler

Page 3: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 5 1ere année BTS-DSI

Introduction aux fichiers BATCH

GOTO aller à une section d'un script

SET VARNAME=

Crée une variable d'environment.

Pour toutes ces commandes vous pouvez consulter l'aide sur les paramètres à passer via "/ ?" après la commande

Après avoir vu les principales commandes Dos nous allons désormais les intégrés dans notre premier script.

3. Mon premier Script

Désormais nous allons pouvoir crée notre premier batch.

Étape 1: L'éditeur de texte

Tous d'abord il est préférable de télécharger et utiliser un éditeur de texte plus évolué que les éditeurs de bases Windows comme notepad. Télécharger donc Powerbatch.

Étape 2: Création du fichier batch

Tapez le texte ci-dessous dans votre fichier batch.

rem la directive rem permet de commenter une ligne au sein d'un fichier batch rem la commande echo off permet de désactiver l'affichage des commandes echo off rem la commande cls de mettre à blanc l'affichage effaçant toutes les lignes précédente cls rem la commande echo texte permet d'afficher du texte dans la fenêtre dos echo voila mon premier batch rem la commande pause permet d'arreter le script en demandant une action de l'utilisateur pause

Étape 3: Enregistrement

Une fois le fichier taper il faut l'enregistrer avec une extension spécifique .bat

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 6 1ere année BTS-DSI

Introduction aux fichiers BATCH

Le fichier ainsi crée apparaît comme ceci sous Windows.

Il est également possible d'enregistrer le fichier sous l'extension .cmd ou encore grâce à powerbatch de le compiler en .com.

Étape 4: Exécution

Pour l'exécuter double cliquez simplement sur le fichier. Vous pouvez sinon l'éxécuter dans une tache planifier de programmer le lancement tous les jours par exemple.

Voila comment crée un script n'ayant aucun intérêt :-), voyons dans la suite comment crée un script plus sophistiqué intégrant des variables.

Pour tester vos commandes à intégrer dans votre batch n'hésitez pas à les essayées dans une fenêtre MS-DOS (Démarrer -> Exécuter -> CMD)

4. Les Variables

Définition et utilisation d'une variable Une variable permet de stocker une donnée qu'on lui indique, à tous moment dans le script on pourra faire appel à elle.

rem désactive l'affichage des commandes echo off rem remise à blanc de l'écran cls rem définition de la valeur de la variable set variable=1 rem affiche du texte en rappelant la variable en la plaçant entre % echo la valeur de la variable est %variable% rem arrêt

Page 4: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 7 1ere année BTS-DSI

Introduction aux fichiers BATCH

pause

Résultat:

Demande de valeur à l'utilisateur Il semble intéressant de pouvoir interagir avec l'utilisateur en demandant une variable.

rem désactive l'affichage des commandes echo off rem remise à blanc de l'écran cls rem le /p permet de demander le retour de la variable set /p prenom= Quel est votre prenom : rem remise à blanc cls rem affiche le texte avec la variable rentrée echo Sa va %prenom%, tu a un joli prenom :-) rem arrêt pause

Résultat:

Les variables d'environnement Nous avons vu comment définir des variables, en demander à l'utilisateur, mais Windows possède un certain nombre de variables déjà renseignées, concernant votre système.

rem désactive l'affichage des commandes echo off rem remise à blanc de l'écran cls rem liste des variables echo Salut %USERNAME%,nous somme le %DATE% il est %Time% déjà!, %RANDOM% est un chiffre al‚atoire.Ton PC se nomme %COMPUTERNAME%, il possŠde %NUMBER_OF_PROCESSORS% processeur, c'est une architecture %PROCESSOR_IDENTIFIER% rem arrêt pause

Liste des variables d'environnement:

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 8 1ere année BTS-DSI

Introduction aux fichiers BATCH

ALLUSERSPROFILE APPDATA CLASSPATH CommonProgramFiles COMPUTERNAME= ComSpec DEVMGR_SHOW_DETAILS FP_NO_HOST_CHECK HOMEDRIVE HOMEPATH LOGONSERVER NUMBER_OF_PROCESSORS OS

Path PATHEXT PROCESSOR_ARCHITECTURE PROCESSOR_IDENTIFIER PROCESSOR_LEVEL PROCESSOR_REVISION ProgramFiles PROMPT QTJAVA SESSIONNAME SystemDrive SystemRoot TEMP

TMP USERDOMAIN USERNAME USERPROFILE windir DATE TIME CD RANDOM ERRORLEVEL CMDEXTVERSION CMDCMDLINE

Découpage d'une variable L'interêt de découper une variable est de pouvoir extraire certaine parties afin de pouvoir les retraitées.

rem désactive l'affichage des commandes echo off rem remise à blanc de l'écran cls echo variable de base date: %date% rem découpage %date:~0,2% rem 1er chiffre numéro du caractère de début de la sélection rem 2eme chiffre nombre de caractères après le début echo Nous somme le %date:~0,2% le %date:~3,2%eme mois de l'ann‚e %date:~6,4% rem arrêt pause

Résultat:

Calculs simple avec des variables

Grâce aux batch il est possible de pouvoir faire des opérations simples telles qu'une addition, soustraction, multiplication ou encore division. Cela est possible avec la commande set /a.

@echo off

echo Addition set /a add = 5+5 echo 5 + 5 = %add%

echo. echo Soustraction set /a sous = 10-5

Page 5: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 9 1ere année BTS-DSI

Introduction aux fichiers BATCH

echo 10 - 5 = %sous%

echo. echo Division set /a div = 10/2 echo 10 / 2 = %div%

echo. echo Multiplication set /a mult = 10*2 echo 10 * 2 = %mult%

pause

Résultat:

Il est possible de donner des priorités aux opérations grâce aux parenthèses.

@echo off

echo Priorit‚ op‚ratoire set /a pri = ((10*5)*2 + (10*5)*2)/2 echo ((10*5)*2 + (10*5)*2)/2 = %pri%

Résultat:

Nous avons pu voir les l'utilisation des différentes variables sous DOS, désormais nous pouvons aborder la création de fonctions qui va considérablement augmenter les possibilités de nos scripts.

5. Fonctions

Les fonctions dans les scripts permettent de crée un script un peu plus poussé.

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 10 1ere année BTS-DSI

Introduction aux fichiers BATCH

Les étiquettes La fonction étiquette permet de pouvoir intervenir sur le séquencement, typiquement votre script va exécuter les commandes aux une à la suite des autres. Pour casser tout ça les étiquettes permettent d'accéder 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.

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

Structures de la commande:

IF "chaîne1" comparant "chaîne2" (action)

IF "chaîne1" comparant "chaîne2" (action1) else (action2)

Exemples:

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)

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

Exemple :

Page 6: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 11 1ere année BTS-DSI

Introduction aux fichiers BATCH

Avec des SI on 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é de 1 à chaque passage set /a count = count + 1 rem affiche la variable à chaque passage echo %count% rem SI la variable %count% est égal à 10 alors aller au saut :fin if %count%==10 goto fin goto boucle :fin rem on peut insérer une variable dans une chaîne de caractère sans problème echo Grace a des SI on mis %count% fois Paris en bouteille pause

Résultat:

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

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

Test sur l'existance 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 existe sinon afficher existe pas. if exist temp.bat (echo existe) else echo existe pas pause

Test sur la non-existance d'un fichier

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 12 1ere année BTS-DSI

Introduction aux fichiers BATCH

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 existe sinon afficher existe pas. if not exist temp.bat (echo existe pas ) else echo existe pause

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

Echo off :debut cls

Echo Question: Quel 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 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‚e ! 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

Page 7: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 13 1ere année BTS-DSI

Introduction aux fichiers BATCH

GOTO Fin

:Fin pause goto debut :q

La fonction FOR Cette fonction for permet de pouvoir parcourir un ensemble de fichiers de lignes, et d'éxécuter des actions pour élément parcouru.

Structure de la commande:

FOR /f %variable IN (ensemble) DO commande

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 le contenu de la ligne FOR /f %%i IN (temp.txt) DO ( echo ligne %%i ) pause

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 14 1ere année BTS-DSI

Introduction aux fichiers BATCH

La 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 simple, 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électionner 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.

Page 8: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 15 1ere année BTS-DSI

Introduction aux fichiers BATCH

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

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

Création d'un compteur La création d'un compteur peut être très utile dans certaines situation, prenom l'exemple d'un compteur de temporisation. Ce dernier aura pour effet de retardé certaine commandes.

Il s'agit de crée une boucle à l'aide d'une étiquette incrémentant une variable ici %count%

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 16 1ere année BTS-DSI

Introduction aux fichiers BATCH

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

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

6. Les 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 pouvoir récupéré le premier mot passer en paramètre au script. Comme vous l'aurez deviner %2 et le deuxième paramètre au script. Mais regardons plutôt le résultat:

Et voila rien de compliquer mais cette fonction peut s'avèrée utile dans certaine situations.

7. Affichage

Afin de rendre plus agréable votre script à l'utilisateur, il est possible de personnaliser légèrement l'affichage. Ne vous attendez pas à de gros exploits en matière graphique mais c'est marrant quand même.

Couleurs texte et arrière plan sous MS-DOS Pour commencer il est possible de modifier les couleurs, vous avez sûrement remarquez qu'il était possible de modifier les couleurs grâce à un clic droit dans la barre de titre d'une fenêtre MS-DOS.

Page 9: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 17 1ere année BTS-DSI

Introduction aux fichiers BATCH

Et Bien il est possible d'intégré cette fonctionalité dans vos script grâce à la commande " color " , c'est original .

Voici les code de couleur utilisable sous dos vous pourrez avoir plus de détail dans la section commande.

0= Noir 8 = Gris 1= Bleu 9 = Bleu clair 2= Vert A= Vert clair 3= Turquoise B = Turquoise clair 4= Rouge C = Rouge clair 5= Violet D= Violet clair 6= Jaune E = Jaune clair 7= Gris clair F = Blanc

Pour définir le texte et l'arrière plan la commande "color arrièrepland texte" .Ainsi ce batch sera coloré comme ci-dessous.

@echo off color 0A echo Mon script est en couleurs super ! pause

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 18 1ere année BTS-DSI

Introduction aux fichiers BATCH

Les Cadres Il est possible de pouvoir crée des faux cadre afin d'avoir une interface plus sympa. Pour cette section je vous recommande vivement Powerbatch qui possède un assistant pour crée ces cadres.

Pour crée ces dernier il faut utiliser des caractère spéciaux, ainsi:

@echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» @echo ºQuel joli cadre !º @echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ pause

Nom de la fenêtre MS-DOS Grâce à la commande "title" il est possible de remplacer le joli Invite de commande par ce que vous voulez.

exemple:

@title Batcher ! pause

Execution en fenêtre réduite Lorsque vous éxecuter un batch automatiquement au démarrage de l'ordinateur ou encore en tache planifier, il est souvent utile de masquer l'éxecution du batch pour le rendre transparent aux yeux des utilisateurs.

Il faut tout d'abord crée un raccourci vers le fichier batch (clic droit):

Page 10: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 19 1ere année BTS-DSI

Introduction aux fichiers BATCH

Ensuite il faut aller voir les propriétés du raccourci:

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 20 1ere année BTS-DSI

Introduction aux fichiers BATCH

Enfin vous trouverez trois modes d'exécution, Fenêtre normale, Réduite, Agrandie, sélectionnez Réduite.

Voila le batch sera désormais visible uniquement dans la barre des tâches, vous pouvez mettre le raccourci dans Démarrer -> Tous les programmes -> Démarrage pour une éxécution au démarrage de l'ordinateur.

Exemple script affichage

Voila un petit script permettant de pouvoir

@title http:\\Batcher.ath.cx @set t=0 :boucle cls @color %t% @echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» @echo ºQuel joli cadre !º @echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ @set /a t = t + 1 if %t%==99 goto fin goto boucle :fin pause

8. Exemples

Page 11: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 21 1ere année BTS-DSI

Introduction aux fichiers BATCH

Dans cette dernière section vous pourrez trouver des exemples de scripts ayant divers utilités, qui utilisent les éléments vu sur le site. Si certaines parties vous échappent non pas que les scripts soit très compliqués, référez-vous aux sections pour comprendre le fonctionnement.

Script de sauvegardes Ce script permet de faire des sauvegardes incrémentielle sur une machine distante appartenant au réseau.

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 22 1ere année BTS-DSI

Introduction aux fichiers BATCH

rem désactive l'affichage des commandes @ echo off

rem /////////////////////////Début Région Modifiable////////////////////////////

rem nom du serveur à synchroniser set srv=\\ZEUS

rem définition du répertoire de log, le nom de fichier correspondra au jour mois et année set log=c:\log\%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%.txt

rem défint ion du répertoire locale source de la copie set source=D:\sauvegardes

rem définition du répertoire locale destination de la copie set dest1=%srv%\partages\sauvegardes

rem /////////////////////////Fin Région Modifiable//////////////////////////////

rem permet de mettre à blanc l'écran cls

rem change la couleur texte + fond (3+a) ici fond noir texte vert color 0a

rem nom de la fenenetre MS-DOS title Sauvegarde de %computername% vers %srv%

rem test de présence du serveur echo %srv%>temp.txt for /F %%i IN (temp.txt) DO (PING -n 2 -w 4 %%i | FIND "TTL=">NUL IF NOT ERRORLEVEL 1 goto ok) goto non

:non set msg=Le serveur %srv% ne r‚pond pas, pas de sauvegarde possible goto fin

:ok

rem compteur de temps de traitements set debhour=%time:~0,2% set debmin=%time:~3,2% set debsec=%time:~6,2%

rem ////////////////////////////////////////////////////////////////////////////

echo ------------------------------------------------------------- >> %log% echo Rapport de la sauvegarde de %computername% du %date% à %time% >> %log% echo ------------------------------------------------------------- >> %log%

Page 12: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 23 1ere année BTS-DSI

Introduction aux fichiers BATCH

cls echoÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ echo ³ Synchronisation de l'horloge avec le serveur en cours patientez... ³ echoÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ net time %srv% /set /yes

rem //////////////////////////////////////////////////////////////////////////// cls echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ echo ³ Synchronisation des fichiers sur le serveur en cours patientez... ³ echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

rem copie tous les fichiers et répertoire source dans le répertoire destination en ne copiant que les fichiers qui ont été modifiés, en se basant sur la date de création de fichier se qui explique la synchronisation des horloge au dessus. Le tout est évidement envoyé dans un fichier de log. xcopy /y %source%\*.* %dest1%\ /d /s /e /f >> %log%

cls

rem //////////////////////////////////////////////////////////////////////////// rem fin défint ion du point de fin de traitement set finhour=%time:~0,2% set finmin=%time:~3,2% set finsec=%time:~6,2%

rem calcul du temp de traitement set /a hour= %finhour% - %debhour% set /a min= %finmin% - %debmin% set /a sec= %finsec% - %debsec%

echo ---------------Traitement en %hour%h %min%m %sec%s------------------------ >> %log% rem ////////////////////////////////////////////////////////////////////////////

set msg=La sauvegarde de %computername% le %date% … %time% en %hour%h %min%m %sec%s c'est correctement deroul‚e. Consulter le fichier de log

:fin

@net start messenger net send %computername% "%msg%" @net stop messenger

rem lancement du fichier de log

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 24 1ere année BTS-DSI

Introduction aux fichiers BATCH

%log%

del temp.txt

Page 13: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 25 1ere année BTS-DSI

Introduction aux fichiers BATCH

Défragmenteur Ce script permet de défragmenter vos disques durs les uns à la suite des autres en précisant le nom de vos lecteurs.

del temp.txt echo off rem change la couleur texte + fond (3+a) color 0a rem active l'affichage du texte

rem ///////////////////Début de la région modifiable////////////////////////////

rem définition des partitions à défragmenter echo c: >> temp.txt echo d: >> temp.txt echo e: >> temp.txt rem echo e: >> temp.txt rem echo e: >> temp.txt rem echo e: >> temp.txt rem ech oe: >> temp.txt

rem /////////////////////Fin de la région modifiable////////////////////////////

rem défragmenter les lecteurs se trouvant dans le fichier temp.txt FOR /f %%i in (temp.txt) do ( cls echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º D‚fragmentation du %%i º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

defrag %%i -f

)

del temp.txt pause

Défragmenteur réseau Ce script permet de défragmenter des postes sur votre réseau, en les allumants si des utilisateurs les ont éteints.

rem /////////////////////////////ATTENTION////////////////////////////////////// rem Ce script fonctionne uniquement si les utilitaires PSEXEC.exe, WOL.exe sont rem Présents dans un répertoire spécifié rem /////////////////////////////ATTENTION//////////////////////////////////////

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 26 1ere année BTS-DSI

Introduction aux fichiers BATCH

rem /////////////////////////////Fonctionalité de script//////////////////////// rem Le script permet de défragmenter une liste de poste sur un réseau, en allumant rem les machines eteinte afin de pouvoir faire la défragmentation. Ensuite si, rem cette dernière était allumé il l'éteint pour qu'elle retourne dan sont rem état initiale. rem /////////////////////////////Fonctionalité de script////////////////////////

@ echo off cls

rem |||||||||||||||||||||||définition des variables||||||||||||||||||||||||||||| rem demande du nom de pc à traiter set /p pc=Entrez le nom du poste distant ? (sans slash, respectez la casse)

set up=0

set date=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2% rem |||||||||||||||||||||||définition des variables|||||||||||||||||||||||||||||

rem ///////////////// début Région Modifiable///////////////////////////////////

rem définition du fichier ou sera enregistré les logs (pas de slash à la fin de la ligne) set log=\\monserver\defrag\log\%date%.log

rem Le script fait appel à un fichier .csv externe qui possede par ligne le nom rem l'ip et l'adresse MAC de tous les poste ayant été connecter au réseau. rem Le fichier .csv doit etre exporté depuis un serveur DHCP dans la section rem lease avec un clic droit option exporté au format .csv, avec donc les rem virgules en séparateurs.

set cvs=\\monserver\defrag\list.csv

rem definition du répertoire où sont située les programmes externes (wol.exe,psexec.exe) set pgrm=\\monserver\defrag\defrag

rem définition d'un répertoire temporaire accecible en écriture set tmp=\\monserver\defrag\

rem //////////////// fin Region Modifiable//////////////////////////////////////

echo _________________________________________________________ >> %log%

echo ------------------------------------ >> %log% echo Rapport de la tâche de %computername% du %date% à %time% >> %log% echo ------------------------------------ >> %log% echo _______________________________________________________ >> %log%

Page 14: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 27 1ere année BTS-DSI

Introduction aux fichiers BATCH

rem ---------------------------------------------------------------------------- rem -------------------- Début test présence PC -------------------------------- rem ----------------------------------------------------------------------------

rem si la machine répond au ping alors passer la variable up à 1, sinon la laisser à 0 cd \ echo %pc%>temp.txt for /F %%i IN (temp.txt) DO (PING -n 2 -w 4 %%i | FIND "TTL=">NUL IF NOT ERRORLEVEL 1 goto ok) goto non

:non echo %pc% éteint >> %log%

goto fin

:ok echo %pc% deja allumé >> %log% set up=1 :fin del temp.txt rem ---------------------------------------------------------------------------- rem ---------------------- FIN test présence PC -------------------------------- rem ----------------------------------------------------------------------------

rem ---------------------------------------------------------------------------- rem -------------------- Début allumage du pc si éteint ------------------------- rem ---------------------------------------------------------------------------- if "%up%"=="0" goto exec goto fin2 :exec

rem cree un fichier avec la ligne correspondante au nom du pc find " %pc%." %cvs% > %tmp%\mac.txt

rem dans ligne prédement séléctionner extraction de la colonne correspondant à rem l'adresse MAC et execution du Wake On Lan sur le réseau. Cette commande est rem à adapté en fonction de votre fichier csv

FOR /f "tokens=5 delims=," %%i in (%tmp%\mac.txt) do %pgrm%\wol.exe %%i echo %pc% démarrer >> %log%

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 28 1ere année BTS-DSI

Introduction aux fichiers BATCH

:fin2

rem ---------------------------------------------------------------------------- rem -------------------- Fin allumage du pc si éteint -------------------------- rem ----------------------------------------------------------------------------

rem ---------------------------------------------------------------------------- rem --------------------------- Temporisation ---------------------------------- rem ----------------------------------------------------------------------------

rem temporistation pour attendre démarrage de l'OS :boucle set /a count = count + 1 if %count%==30000 goto finboucle goto boucle :finboucle

rem ---------------------------------------------------------------------------- rem --------------------------- Fin Temporisation ------------------------------ rem ----------------------------------------------------------------------------

rem ---------------------------------------------------------------------------- rem ---------------- Début défragmentation ------------------------------------- rem ----------------------------------------------------------------------------

rem défragmentation avec le logiciel psexec.exe %pgrm%\psexec.exe \\ %pc% defrag c: >> %log%

rem ---------------------------------------------------------------------------- rem ---------------------- Fin défragmentation --------------------------------- rem ----------------------------------------------------------------------------

rem ---------------------------------------------------------------------------- rem --------------- Début extinction du pc si anciennement éteint---------------- rem ----------------------------------------------------------------------------

if "%up%"=="0" goto exec2 goto fin3 :exec2 shutdown -s -m \\ %pc% echo %pc% extinction >> %log% :fin3

rem ---------------------------------------------------------------------------- rem --------------- Fin extinction du pc si anciennement éteint----------------

Page 15: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 29 1ere année BTS-DSI

Introduction aux fichiers BATCH

rem ----------------------------------------------------------------------------

pause

Cleaner Ce script permet de défragmenter des postes sur votre réseau, en les allumants si des utilisateurs les ont éteints.

echo off cls title Cleaner! v1.2

rem définintions des chemins des fichiers de configuration

set log=c:\windows\rapport.txt set conf=c:\windows\confhdd del %log%

if exist %conf%.txt goto skip rem scan des disques durs

echo 1 > c:\temp.txt echo 1 > d:\temp.txt echo 1 > e:\temp.txt echo 1 > f:\temp.txt echo 1 > g:\temp.txt echo 1 > h:\temp.txt echo 1 > i:\temp.txt

if exist c:\temp.txt echo c >> %conf%.txt if exist d:\temp.txt echo d >> %conf%.txt if exist e:\temp.txt echo e >> %conf%.txt if exist f:\temp.txt echo f >> %conf%.txt if exist g:\temp.txt echo g >> %conf%.txt if exist h:\temp.txt echo h >> %conf%.txt if exist i:\temp.txt echo i >> %conf%.txt

if exist c:\temp.txt echo c: >> %conf%2.txt if exist d:\temp.txt echo d: >> %conf%2.txt if exist e:\temp.txt echo e: >> %conf%2.txt if exist f:\temp.txt echo f: >> %conf%2.txt if exist g:\temp.txt echo g: >> %conf%2.txt if exist h:\temp.txt echo h: >> %conf%2.txt if exist i:\temp.txt echo i: >> %conf%2.txt

del c:\temp.txt del d:\temp.txt del e:\temp.txt del f:\temp.txt del g:\temp.txt

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 30 1ere année BTS-DSI

Introduction aux fichiers BATCH

del h:\temp.txt del i:\temp.txt

:skip rem log color 0e echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» >>%log% echo º CLEANER: Rapport º >>%log% echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ >>%log% echo. >>%log% echo. >>%log% echo. >>%log% echo ____________________________________________________________________________ >> %log% echo Drives: >> %log% more %conf%2.txt >> %log% echo ____________________________________________________________________________ >> %log%

if not exist c:\windows\confclean.txt goto set

goto run

:set color 0a cls echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º CLEANER Configuration º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ echo. echo. FOR /f "tokens=1 delims=," %%i in (%conf%.txt) do cleanmgr.exe /d%%i /sageset: 1 echo 1 > c:\windows\confclean.txt

:run color 0b cls echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º CLEANER: Hard Drive Cleaning º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ echo. echo. echo Nettoyage des disques dur en cours... cleanmgr.exe /dc /sagerun: 1

echo. >>%log% echo. >>%log%

rem defrag cls color 0c

Page 16: Introduction au fichiers batch

SYSTEMES D’EXPLOITATION

/H.MACHHOUR 31 1ere année BTS-DSI

Introduction aux fichiers BATCH

echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º CLEANER: Hard Drive Defragmenting º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ echo. echo. FOR /f "tokens=1 delims=," %%i in (%conf%2.txt) do ( echo. >>%log% echo. >>%log% echo. >>%log% echo ____________________________________________________________________________ >> %log% echo Défragmmentation de %%i >> %log% echo ____________________________________________________________________________ >> %log% echo D‚fragmentation du disque %%i en cours... defrag %%i /f >> %log% echo. >>%log% echo. >>%log% )

rem rapport cls

more %log% pause