Upload
ayoub-bouchebkat
View
240
Download
4
Tags:
Embed Size (px)
DESCRIPTION
M4 - Systeme D'exploitation
Citation preview
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
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
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
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
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 :
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
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.
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.
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):
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
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%
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
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%
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----------------
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
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