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