introduction-au-fichiers-batch

Page 1

SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

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.

Introduction aux fichiers BATCH

Sommaire 1. 2. 3. 4. 5. 6. 7. 8.

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

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

1

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

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

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

ECHO.

Permet de sauter une ligne

ren toto.txt tata.txt

c> echo salut 2

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


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SORT

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

PRINT

Imprime le fichier spécifié

EXIT

Ferme la fenêtre MSDOS

TYPE

Affiche un fichier texte.

FC

Comparaison de fichiers

Commandes réseaux Commande

SYSTEMES D’EXPLOITATION

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

c>print toto.txt

Fonction

Introduction aux fichiers BATCH

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. Affiche les données du compteur de performances dans la fenêtre de commande ou dans un format de fichier journal pris en charge.

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)

TYPEPERF

NESTAT

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

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

NET USE

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

MEM

TRACERT

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

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 soussystème MS-DOS.

LABEL

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

AT

planifie l'exécution de commandes

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.

REG

Permet de faire des interventions dans la base de registre.

TITLE

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

TFTP

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

TREE

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

RUNAS

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

BREAK

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

NET TIME

Permet de pouvoir synchroniser l'horloge avec un serveur.

PROMPT

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

MODE

Permet d'afficher des informations concerant les ports COM

>

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

NETSH

Permet de configurer des interfaces réseaux.

>>

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

Commandes utilitaires Windows Commande

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)

Commandes pour les scripts 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

Commande

Fonction

PAUSE

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

Permet de faire un netoyage des disques durs.

IF

Instore une structure conditionnelle

CONVERT

Convertit des volumes FAT en volumes NTFS

FOR

permet de crée des boucles

SCHTASKS

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

SET

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

3

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

4

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


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

GOTO

aller à une section d'un script

SET VARNAME=

Crée une variable d'environment.

SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

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

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

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.

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

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

5

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

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 6

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


SYSTEMES D’EXPLOITATION

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

SYSTEMES D’EXPLOITATION

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

Introduction aux fichiers BATCH

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:

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

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

Liste des variables d'environnement:

7

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

8

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


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

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.

echo 10 - 5 = %sous% echo. echo Division set /a div = 10/2 echo 10 / 2 = %div%

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

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

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

Résultat:

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) Il est possible de donner des priorités aux opérations grâce aux parenthèses.

Exemples:

@echo off

IF toto EQU toto (echo la tete a toto)

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

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.

Résultat:

Les comparants utilisables sont:

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.

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.

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

Exemple : 10

9

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

DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

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:

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

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

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

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

: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

Test sur la non-existance d'un fichier 11 DSI

1ere année BTS-/H.MACHHOUR

12 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

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

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

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.

@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

Fichier: c:\data.csv

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

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:

13 DSI

1ere année BTS-/H.MACHHOUR

A l'aide, de la fonction FOR il est possible de sélectionner une colonne au sein d'un fichier avec délimiteur. 14 1ere année BTS-/H.MACHHOUR DSI


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

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

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

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

Introduction aux fichiers BATCH

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:

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

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.

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.

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.

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

15 DSI

1ere année BTS-/H.MACHHOUR

16 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

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: Et Bien il est possible d'intégré cette fonctionalité dans vos script grâce à la commande " color ", c'est original .

@title Batcher ! pause

Voici les code de couleur utilisable sous dos vous pourrez avoir plus de détail dans la section commande. 8 =Gris 0=Noir 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

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

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

17 DSI

1ere année BTS-/H.MACHHOUR

18 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

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

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

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

1ere année BTS-/H.MACHHOUR

20 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

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

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%

21 DSI

1ere année BTS-/H.MACHHOUR

22 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

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

SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

%log% del temp.txt

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

1ere année BTS-/H.MACHHOUR

24 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

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.

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

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

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

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

set up=0

rem /////////////////////Fin de la 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

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

rem ///////////////// début 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 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

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.

defrag %%i -f

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

del temp.txt pause

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

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 //////////////// fin Region Modifiable//////////////////////////////////////

echo _________________________________________________________ >> %log% 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////////////////////////////////////// 25 DSI

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

1ere année BTS-/H.MACHHOUR

26 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

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

rem ---------------------------------------------------------------------------rem -------------------- Fin allumage du pc si éteint -------------------------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

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

:non echo %pc% éteint >> %log% goto fin :ok echo %pc% deja allumé >> %log% set up=1

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

:fin del temp.txt

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

rem ---------------------------------------------------------------------------rem ---------------------- FIN test présence PC -------------------------------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 allumage du pc si éteint ------------------------rem ---------------------------------------------------------------------------if "%up%"=="0" goto exec goto fin2 :exec

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

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

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

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%

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

1ere année BTS-/H.MACHHOUR

28 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

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

SYSTEMES D’EXPLOITATION

Introduction aux fichiers BATCH

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

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%

: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

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

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

: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

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

: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

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

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

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

rem defrag cls color 0c 29

DSI

1ere année BTS-/H.MACHHOUR

30 DSI

1ere année BTS-/H.MACHHOUR


SYSTEMES D’EXPLOITATION

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

31 DSI

1ere année BTS-/H.MACHHOUR


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.