[BITS 16]
jmp debut

%include "../index.html"

call init_article
cmp init_artcle, OK
jne error
jmp end

Cours de Batch n1 by Defcon.

Alors j'ai decouvert la programmation BATCH qui est en fait pas si mal que ca, elle est en fait reserve a Windows car elle passe par des commandes MS-DOS, on peut la comparer a la programmation shell sous Linux qui elle est beaucoup plus aboutie car beaucoup plus de commandes et de possibilites. Donc aujourd'hui on va commencer par une introduction donc et aussi la creation de votre premier BATCH. C'est sur on ne peut pas coder de Trojans par exemple avec le BATCH mais on peut creer des virus, faire des progs. Utiles, et aussi mieux comprendre MS-DOS.

1) Introduction

Basiquement, un fichier Batch n'est rien de plus qu'un fichier texte contenant des commandes MS-DOS, et possedant le suffixe ".bat".
Si vous ne connaissez pas MS-DOS ou n'avez jamais entendu parler de Autoexec.bat, passez votre chemin : en effet, la programmation Batch necessite une connaissance minimum de l'environnement DOS.(je ferais peut etre une approche du DOS dans un prochain article).
En fait, un fichier Batch contient simplement une suite de commandes que vous pourriez taper sous l'invite (prompt) du DOS, chaque nouvelle ligne du fichier correspondant a une nouvelle commande. Neamoins, certaines commandes ne sont qu'utilisables dans les fichiers batch du fait de leur inutilite dans l'environnement de commande DOS.
Leur utilite est, par exemple, quand il faut repeter toujours la meme serie de commandes.A titre d'exemple, nous pourrions evoquer le changement de repertoire et peut-etre aussi la commande FORMAT qu'on fait souvent suivre de la commande CHKDSK pour verifier si la disquette a bien ete formatee.

Exemple :

Imaginons un fichier batch contenant les commandes suivantes :

cd \
cd C: \Tools
qmail -z : "default.txt"

Cela aurait le meme effet que si vous tapiez sous DOS les commandes suivantes :

C:\Chemin> cd \ [Entree]
C:\> C:\TOOLS [Entree]
C:\TOOLS> qmail -z:"default.txt" [Entree]

L'interet des batch est donc d'automatiser des taches repetitives effectuees sous DOS.
Les fichiers batch sont donc tres faciles a creer puisqu'un simple editeur texte suffit (Comme EDIT, sous DOS) ( Bah oui vous saviez pas? :) )
Les fichiers batch peuvent egalement utiliser toutes les commandes DOS, donc plus de possibilites. Enfin, leur taille est relativement legere par rapport a d'autres programmes, ce qui facilite leur transfert sur differents disques et supports de stockage. ;)


Cependant..

- Le langage Batch n'est pas compile, il est interprete par COMMAND.COM ce qui rend plus lent l'execution de programmes batch par rapport a des applications ecrites directement en langage machine.

- Les fichiers Batch sont directement editables, donc votre code n'est pas "protege" a la copie par d'autres programmeurs (y'a des progs pour mettre les batchs en .com ou .exe)

- Enfin, et surtout, des operations elementaires comme le traitement de chaines de caracteres, d'operations mathematiques, etc.. n'existent pas sous DOS, ce qui implique l'usage de programmes externes (s'ils ont ete crees, selon les cas).

2) Votre premier BATCH ;)

Prenons le cas simpliste ou vous souhaitez lister les fichiers DLL du repertoire de Windows (C:\WINDOWS). Vous entreriez sous DOS :

C:\Chemin> cd \ [Entree]
C:\> cd WINDOWS [Entree]
C:\WINDOWS> DIR *.DLL [Entree]

Il vous suffit de taper dans un fichier texte les commandes precedentes, comme si vous les entriez sous le prompt MS-DOS :

cd \
cd WINDOWS
DIR* .DLL

Simple, non ? La redaction de votre Batch est terminee.
A notre stade, nous avons cree un fichier texte : il faut maintenant le transformer en Batch. La aussi, pas trop de difficultes : il suffit de changer son extension en .... (je vous laisse trouver , c'est marque au debut de l'introduction) Maintenant, il ne vous reste plus qu'a tester votre Batch !
Un fichier Batch s'execute sous MS-DOS.

Que s'est-il passe ? Que vous soyez sous Windows ou sous MS-DOS, c'est le meme processus : le fichier batch est transmis a l'interpreteur COMMAND.COM, qui analyse chaque ligne du batch et execute les commandes rencontrees.

Comme vous pouvez le constater, la difference avec d'autres programmes Windows est de taille : alors que les executables "normaux" sont des fichiers binaires constitues de macro-instructions destines directement au processeur, les fichiers batchs contiennent les commandes DOS "telles qu'elles", ce qui explique la necessite d'un interpreteur pour "traduire" les commandes au processeur ; c'est le role de COMMAND.COM - il n'y a donc pas besoin de compiler le code.

Si la fenetre se ferme automatiquement sans vous laisser le temps de visualiser son resultat, rajoutez la commande "PAUSE" a la fin de votre batch. Meme si vous ne comprenez pas encore cette commande, sachez que celle-ci demande une validation clavier avant de terminer le programme, ce qui vous laissera le temps de visualiser le contenu de la fenetre.

Comme dit auparavant, les Batchs ont ete concus et s'executent sous MS-DOS. Le terme MS-DOS rappelle pour certains la "prehistoire" de l'informatique moderne et peut conduire a un desinteret total en pensant que le DOS est un systeme obsolete et desormais "enterre", qui ne merite de nos jours plus grand interet. D'un cote c'est vrai : depuis l'avenement des OS graphiques comme Windows ou Linux :) , MSDOS est en phase de declin et est de plus en plus abandonne, tant par les developpeurs que les utilisateurs. Certains utilisateurs des dernieres versions de Windows ignorent meme jusqu'a l'existence du DOS ! (et oui y'a des gens comme ca :( )

Et pourtant, si le DOS a part entiere n'a pas grand interet, la cohabitation MSDOS/ Windows est toujours de nos jours interessante. Cherchez un langage simple pour automatiser vos operations sous Windows : le systeme Batch est la !

Pour des mesures de securite, je vous invitent a regarder la source d'un BATCH a chaque fois que vous desirez l'ouvrir, car il se peut qu'un BATCH puisse endommager votre systeme. ;)

Texte ecrit par Defcon pour la team HoHs et inspire d'un tutorial de astase. Je salue tous mes compatriotes de HoHs et ceux qui me connaissent :).


error:
ret

end:
ret