Powered By Blogger

Rechercher sur ce blogue

samedi 29 mars 2008

Création de batch file

Quelques informations indispensablesMalheureusement, la majorité des sources intéressantes qui pourront vous aider à approfondir les techniques de la programmation Batch sont souvent en anglais..."Xset" est un outil indispensable pour appendre à écrire des fichiers Batch sous toutes les versions de Windows. De plus, Marc Stern propose de nombreux didacticiels à partir de son site Internet : http://xset.tripod.com/.Jerold Schulman qui m'a autorisé à citer quelques-uns de ces scripts anime un site Internet qui propose d'innombrables pages sur la programmation Batch : http://www.jsiinc.com/. C'est, par ailleurs, un des meilleurs sites traitant des systèmes NT de Windows.D'excellents scripts sont également visibles à partir de cette adresse : www.uwasa.fi/~ts/http/http2.html#batch. Timo Salmi propose une multitude de solutions permettant de résoudre les problèmes les plus courants quand on commence à se lancer dans la programmation Batch.Ritchie Lawrence met en lignes de nombreux modèles de scripts et propose quelques utilitaires fort bien faits qui vous permettront de réaliser des choses étonnantes en mode Ms-Dos ou en Invite de commandes. L'adresse de son site est la suivante : http://www.commandline.co.uk/index.html.Enfin, une source inépuisable de trouvailles sont proposées à partir de ce forum recouvrant une multitude de thématiques dont Ms-Dos et l'Invite de commandes : http://www.experts-exchange.com/Operating_Systems/MSDOS.



La plupart des exemples de scripts expliqués dans ce chapitre s'inspirent directement ou indirectement des techniques présentées par ces différents auteurs.

Créer un fichier Batch


Le terme "Batch" désigne un fichier contenant une suite de commandes qui seront traitées automatiquement. Nous appelons aussi cela un "traitement par lot". Afin de créer votre premier fichier Batch suivez cette procédure :1) Ouvrez un éditeur de texte : le Bloc-notes par exemple.2) Inscrivez vos lignes de commandes.3) Enregistrez votre fichier texte.4) Cliquez sur le nom du fichier puis appuyez sur la touche F2.Vous serez en mode "Édition".5) Renommez le fichier en changeant l'extension .txt en .bat.À la question : "Voulez-vous vraiment renommer le fichier", répondez par Oui.Attention de désactiver au préalable la case "Masquer les extensions de fichiers dont le type est connu" dans les options avancés de l'Explorateur Windows.


Quelle différence entre l'extension .cmd .btm et .bat ?Un fichier .cmd ou .btm ne sera pas reconnu en tant que tel par Windows 9X. Nous pouvons voir cela comme une sorte de garde-fou si tel fichier de commande est parfaitement incompatible avec ces versions de Windows. Par ailleurs, le processus est légèrement différent :Dans le cas d'un fichier .bat ou .cmd, chaque ligne du fichier est exécutée individuellement et le fichier fermé puis ouvert à chaque lecture d'une nouvelle commande. Dans le cas d'un fichier .btm, le fichier n'est ouvert qu'une fois, puis lu en mémoire et enfin fermé. C'est donc a priori le mode le plus rapide. surtout si ce sont des commandes internes qui sont exécutées.



Savoir se servir de la commande EchoDans un nouveau fichier Batch, copiez ce contenu :


echo La commande Echo est active
@echo
date /t
echo off
date /t
@echo off
date /t



L'utilisation de l'arobase permet de biffer le statut de la commande "Echo".Par ailleurs, la commande "Echo off" évite l'affichage des commandes contenues dans le script.


Se servir des parenthèses dans les fichiers de scriptsSi vous souhaitez rediriger le résultat de différentes commandes dans un même fichier texte. Par exemple :


dir /s /b *.doc >> résultat.txt
dir /b *.dot >> résultat.txt
etc.


Il est dans ce cas plus simple de saisir :


(
dir /s /b *.doc
dir /s /b *.dot
) >> résultat.txt




Cela vous évitera de spécifier plusieurs fois le même fichier de sortie. Par ailleurs, c'est une manière de créer de toutes pièces un fichier texte :
@echo off
(
@echo Bonjour,
@echo Tout le monde !
) > test.txt



Dans ce dernier cas, les commandes sont regroupées.Faire des remarquesLa commande "Rem" vous permet d'insérer des commentaires ou de désactiver temporairement des commandes inclues dans votre fichier batch. Ce n'est pas tout à fait vrai. La commande rem echo quelque chose > Sortie.txt ne fait qu'envoyer rien au fichier Sortie.txt. La commande est donc exécutée mais en mode "désactivé". Une sorte de coup à blanc... Pour les amoureux de la performance il est donc plus judicieux d'utiliser :: plutôt que Rem. Les deux points étant considéré comme l'indication d'une étiquette la commande ne sera pas exécutée. À titre de test saisissez tour à tour ces deux commandes :
rem echo A
:: echo B

La seconde commande provoque un retour chariot et non un saut de ligne.Dans un fichier Config.sys il est possible de désactiver une commande en utilisant un point virgule : ;connexion=c:\dos\ramdrive.sys



Afficher le code de sortieÀ chaque fois que vous saisissez une commande, cette dernière produit un code de sortie qui sont principalement les suivants :1 : la commande a renvoyé une erreur0 : la commande n'a pas renvoyé d'erreur.C'est la variable %Errorlevel% qui est chargée de suivre les fluctuations de la réussite ou non des commandes exécutées.Information : La commande "Set" teste les "Errorlevel" en partant de la plus petite valeur puis en procédant par incrémentation de 1. La commande "Goto" démarre de la plus grande valeur puis procède par décrémentation de 1.



Se servir des étiquettesLa commande "Goto" vous permet d'atteindre un point précis de votre script. La commande spécifiée doit porter un titre que nous appelons une étiquette. Cette ligne de titre commence obligatoirement par deux points. Nous sommes obligés d'anticiper quelque peu sur l'explication des conditions car c'est une des utilisations privilégiées des étiquettes. Dans un nouveau fichier Batch copiez ce contenu :


@echo off
dir *.doc
if not errorlevel 1 goto Fin else if goto Avertissement
:Avertissement
echo Aucun fichier .doc !
:Fin


La variable %Errolevel% nous permet de saisir si la commande "Dir" a renvoyé une valeur 1 ("Échec") ou 0 ("Opération réussie"). Si au moins un fichier .doc est trouvé nous allons directement à l'étiquette :Fin. Ou, plus exactement si la sortie d'erreur n'est pas 1 ("Échec"), alors il faut se rendre à l'étiquette :Fin. Sinon (else if) nous nous rendrons à l'étiquette :Avertissement. Si nous rajoutons une commande à la suite de l'étiquette :Fin, cette dernière sera automatiquement exécutée même si la condition n'est pas remplie. Afin d'éviter cela, il nous faut nous servir d'une étiquette spéciale : goto:eof. Notre fichier script devient alors :


@echo off
dir *.doc
if not errorlevel 1 goto Fin else if goto Avertissement
:Avertissement
echo Aucun fichier .doc ! & goto:eof
:Fin
echo Processus fini !



Dans ce dernier cas, la commande goto:eof nous permet d'effectuer une césure dans le script. Cela revient à dire : "Affiche le message 'Aucun fichier .doc !' puis ne fait plus rien". En termes savants, puisque nous ne définissons pas d'étiquette, nous transférons le contrôle à la fin du script en cours.










http://www.hotline-pc.org/batch.htm

Aucun commentaire: