travaux pratiques n° 6 commandes et scripts sous windows 1

Transcription

travaux pratiques n° 6 commandes et scripts sous windows 1
IUT Reims Châlons Charleville
TRAVAUX PRATIQUES N° 6
COMMANDES ET SCRIPTS
SOUS WINDOWS
1. OBJECTIFS
A l’issue de cette étude, vous devez être capable de :
♦
Approfondir les connaissances sur le système de fichiers sous Windows
♦
Vers l'administration système : premiers scripts de commandes sous Windows.
2. UN ARTICLE DE WIKIPEDIA, L'ENCYCLOPEDIE LIBRE.
Sur le système d'exploitation Windows NT (Windows NT, Windows 2000 & Windows XP), un fichier
batch est un fichier texte contenant une série de commandes. Quand le fichier batch est lancé, de la
même manière (d'un point de vue utilisateur) qu'un exécutable ordinaire, les commandes du fichier
sont exécutées dans l'ordre. Un fichier batch est l'équivalent d'un script shell sous Unix ou cygwin.
Les fichiers batch du Windows NT sont les fichiers dotés de l’extension .BAT ou .CMD. Leur syntaxe
est héritée de COMMAND.COM de MS-DOS, mais est nettement plus puissante.
Le comportement par défaut de cmd.exe est d'afficher chaque commande sur la sortie standard avant
de l'exécuter. C'est souvent non désiré, la commande ECHO OFF est souvent donnée au début d'un
fichier batch. Cmd.exe interprète également le @, préfixé à la commande, pour empêcher une seule
commande de s'afficher. De ce fait, beaucoup de fichiers batch commencent par la ligne @ECHO
OFF.
2.1.
HISTOIRE ET EVOLUTIONS
La programmation des fichiers scripts sous les systèmes d'exploitation Microsoft a beaucoup évolué.
Au départ, simple suites de commande sous les premières versions de MS-DOS, il permet un peu de
programmation dans les versions livrées avec Windows 2000 et Windows XP.
Il existe deux modes d'exécution :
♦
Un mode interactif
♦
Un mode exécution de scripts
Dans le mode interactif, l'utilisateur tape les commandes qui sont exécutées immédiatement. Le mode
script exécute une séquence de commandes définies dans un fichier batch.
À l'origine, le système MS-DOS fournit un interpréteur : command.com. Les programmes batch pour
MS-DOS sont composés d'un ensemble relativement simple d'ensemble de commandes interprétées
directement par command.com (commande interne) et des utilitaires qui existent en tant
qu'exécutables séparés (commande externe).
Il existe des interpréteurs de commande plus évolués fournis par d'autres sociétés. Le plus connus est
l'interpréteur 4DOS (ou 4NT sous Windows NT) de la société JP Soft.
Le système d'exploitation OS/2 comprend également un interpréteur de commande cmd.exe
apparenté à celui de Windows NT.
Microsoft semble avoir abandonné les améliorations des fichiers batch pour se concentrer sur les
scripts en VBScript ou Jscript permettant une programmation plus structurée et cohérentes avec les
langages de macros de la suite Microsoft Office.
R&T1 - Informatique – module i01– Bruno Botella – 16 oct. 2006
i01_tp6-commandes-scripts-windows.doc
Page 1/6
2.2.
COMMANDES INTERNES
On peut obtenir de l'aide sur toutes les commandes en tapant leur nom suivi de /? :
C:\>echo /?
Affiche des messages ou active/désactive l'affichage des commandes.
ECHO [ON | OFF]
ECHO [message]
ECHO sans paramètres affiche l'état en cours de la commande.
♦
ECHO
Affiche une chaîne sur la sortie. Permet également d'autoriser ou d'interdire l'affichage
des commandes sur la sortie standard par les commandes ECHO ON et ECHO OFF
♦
REM ou ::
Commentaire.
♦
SET
♦
FOR
Sert à modifier des variables d'environnement. Équivalent de set et export sous bash
Sorte de for. On peut grouper plusieurs commandes à l'aide de parenthèses.
Par exemple :
@echo off
for %%A in (1 2 3 4) Do Echo C'est le nombre %%A
Ce fichier Batch contient une boucle FOR…DO. A quoi sert-elle ? Tout d'abord, %%A
est utilisé seulement en tant que nom de variable. Cette variable prend alors toutes les
valeurs de la liste spécifiée entre les parenthèses : dans notre cas, %%A prend donc
successivement les valeurs 1, 2, 3, et 4. Les valeurs constituant la liste doivent être
séparées entre elles par des espaces, des virgules, ou des points virgules. Ensuite, la
commande qui suit immédiatement est exécutée avec la valeur prise par la variable
%%A. Dans notre cas, on verra à l'écran le message "C'est le nombre" suivi de la
valeur de la variable à chaque exécution de ECHO.
Cette commande a de nombreuses options la rendant beaucoup plus puissante que sa
version MS-DOS.
♦
SHIFT
Décale les arguments. Équivalent du shift de bash.
♦
GOTO
Dirige cmd.exe sur une ligne étiquetée dans le programme de commandes. Les
étiquettes sont sur un lignes précédées du caractère ":". Hérité des premières versions
de COMMAND.COM qui ne permettaient pas beaucoup de structuration.
If "<1>" == "<2>" Goto Suite
Commande 1
Commande 2
:Suite
Commande 3
Ainsi, si 1_2, les commandes 1, 2 et 3 seront exécutées, sinon, la commande 3 sera
exécutée et les commandes 1 et 2 évitées.
@echo off
If not "%1"=="/?" Goto Suite
Echo Voici l'aide de ce programme
Echo ……
Goto fin
:Suite
Echo Pour commencer, pressez une touche
Pause
:Fin
REM Fin du batch
R&T1 - Informatique – module i01– Bruno Botella – 16 oct. 2006
i01_tp6-commandes-scripts-windows.doc
Page 2/6
Dans le cas ci-dessus, si le paramètre envoyé au batch n'est pas "/?"; les commandes
après "Suite" sont exécutées. Sinon, le texte d'aide est affiché. On a utilisé un second
label « FIN » afin que dans le cas ou le texte d’aide est affiché, le programme ne soit
pas ensuite exécuté, mais que celui-ci se termine au contraire directement.
♦
CALL
Appelle un autre programme batch. En effet l'appel simple à un fichier batch
provoquera l'enchaînement du fichier sans retour possible vers le fichier appelant.
Permet également d'appeler une fonction (matérialisée par un label (:) et un retour au
programme principal par GOTO :EOF)
Exemple d'appel de fonction avec un argument :
@ECHO OFF
ECHO "Avant fonction1"
CALL :fonction1 arg1
ECHO "Apres fonction1"
REM Sortie du programme
GOTO :EOF
:fonction1
ECHO "Fonction1 avec argument: %1"
REM Sortie de la fonction
GOTO :EOF
♦
START
Démarre une nouvelle fenêtre pour exécuter le programme ou la commande donné.
Par exemple : start netscape
permet de démarrer la commande "netscape" dans une nouvelle fenêtre sans attendre
la fin de son exécution. Il existe de nombreuses options.
♦
IF
♦
Le if connu de tous les programmeurs.
ERRORLEVEL
Utilisé avec IF, teste si la valeur de retour d'un programme atteint ou dépasse une
erreur donnée. Equivalent du $? de bash.
Par exemple: IF ERRORLEVEL 6 GOTO label
Continuera l'exécution à l'étiquette label si le dernier programme exécuté a retourné
une valeur supérieure ou égale à 6.
2.3.
EXEMPLE DE SCRIPT
:: Start Vim on a copy of the tutor file.
@echo off
:: Usage: vimtutor [-console] [xx]
::
:: -console means gvim will not be used
:: xx is a language code like "es" or "nl".
:: When an xx argument is given, it tries loading that tutor.
:: When this fails or no xx argument was given, it tries using 'v:lang'
:: When that also fails, it uses the English version.
:: Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
FOR %%d in (. %TMP% %TEMP%) DO IF EXIST %%d\nul SET TUTORCOPY=%%d\$tutor$
SET xx=%1
IF NOT .%1==.-console GOTO use_gui
SHIFT
SET xx=%1
GOTO use_vim
:use_gui
R&T1 - Informatique – module i01– Bruno Botella – 16 oct. 2006
i01_tp6-commandes-scripts-windows.doc
Page 3/6
:: Try making a copy of tutor with gvim. If gvim cannot be found, try using
:: vim instead. If vim cannot be found, alert user to check environment and
:: installation.
:: The script tutor.vim tells Vim which file to copy.
:: For Windows NT "start" works a bit differently.
IF .%OS%==.Windows_NT GOTO ntaction
start /w gvim -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim"
IF ERRORLEVEL 1 GOTO use_vim
:: Start gvim without any .vimrc, set 'nocompatible'
start /w gvim -u NONE -c "set nocp" %TUTORCOPY%
3. UTILISATION DE COMMANDE WINDOWS
3.1.
UTILISATION LA COMMANDE DIR
A partir de votre répertoire de travail, utiliser la commande « dir *. ». Qu’en concluez vous ?
3.2.
COMMANDE GOTO
Ecrire un fichier Batch copiant le fichier passé en premier paramètre vers le fichier en second
paramètre. On teste tous les cas de figure pour que la copie se passe bien, ce qui conduit à prendre
des branchements particuliers dans des situations critiques :
les arguments correspondant n’ont pas été inclus (source et destination)
si la destination existe déjà, l’effacer avant.
3.3.
BOUCLE FOR
Ecrire le fichier machine.dat contenant les lignes suivantes
tango:192.168.10.5
rumba:192.168.10.4
bergen:192.168.10.1
Donnez le rôle des mot clés eol, skip, delim, token et usebackq
Ecrire un script permettant d’afficher les noms des machines du réseaux.
Ecrire un script pour envoyer un ping vers chaque machine dans le fichier.
R&T1 - Informatique – module i01– Bruno Botella – 16 oct. 2006
i01_tp6-commandes-scripts-windows.doc
Page 4/6

Documents pareils

Tutoriel Batch

Tutoriel Batch Il peut être utile, dans certains cas, d’afficher un texte à l’écran, par exemple pour informer l’utilisateur de ce que « fait » le Batch. Vous utiliserez la commande echo . Encore elle ! Oui, mais...

Plus en détail