Accueil > Dossiers > MS-DOS

MS-DOS (partie du débutant, 2)
Qu'allons nous apprendre dans ce dossier ?

Dans la première partie que j'avais consacré aux débutants qui ne connaissaient pas le MS-DOS, vous aviez appris les commandes CD, MD, COPY CON, DIR, TYPE, MEM, VER, ainsi que l'utilisation de commutateurs sur la commande DIR. Dans cette partie là, vous allez voir DOSKEY, effectuer des opérations simples sur des fichiers, et réaliser des macros.


SOMMAIRE DU TUTORIAL 2

I. Opérations simples sur des fichiers
a) Changer le nom
b) Détruire des fichiers
c) Copier des fichiers

II. Doskey
a) Qu'est-ce que c'est ?
b) Comment le lancer ?
c) La fonction "espionne" de Doskey
d) Gérer la taille des tampons Doskey
e) La solution Reinstall
f) Des macros avec Doskey
g) Macros multi-commandes à variables


I. Opérations simples sur des fichiers

a) Changer le nom >> vers le sommaire
RENAME VIEUXNOM.OLD NEWNOM.NEW : En utilisant cette commande vous changez le nom d'un fichier. Vous devez donner le nom actuel du fichier en premier (vieuxnom.old dans notre cas) et le nom dans lequel vous souhaitez le transformer (newnom.new dans notre cas). Si le fichier a renommer n'est pas dans le répertoire où vous êtes il faut indiquer le chemin d'accès : quel lecteur et quel répertoire ?

Exemple : RENAME INSTALL.BAT ARCHIVE.OLD aura pour effet de renommer (transformer le nom) le fichier INSTALL.BAT en ARCHIVE.OLD
RENAME C:\WINDOWS\INSTALL.BAT ARCHIVE.OLD aura pour effet de renommer le fichier INSTALL.BAT se trouvant dans le répertoire Windows du disque C en un fichier Archive.old

En passant... Comme marqué dans l'exemple, il vous suffit de marquer le chemin d'accès au fichier a renommer et il n'est pas utile du tout de marquer le chemin d'accès au fichier renommé. Par ailleurs, si dans le fichier à renommer porte une extension donnée, et qu'il est le seul de son répertoire avec cette extension, vous pouvez remplacer son nom par un joker ; du moment qu'il n'y a pas confusion, des jokers (nom/extension) sont admis.

RENAME TEMP2 TEMP3 : En utilisant cette commande sur des noms qui n'ont pas d'extensions, l'ordinateur comprend qu'il s'agit de répertoire. Il va donc modifier le nom du répertoire TEMP2 pour le transformer en TEMP3.

Exemple : RENAME BANK2002 ARCHIV02 aura pour effet de renommer le répertoire BANK2002 en ARCHIV02.
RENAME C:\WINDOWS\TEMP TEMP56 aura pour effet de renommer le répertoire TEMP se trouvant dans le répertoire Windows du lecteur C en un répertoire TEMP56.

b) Détruire des fichiers >> vers le sommaire
DEL NOMFILE.ABC : Détruit le fichier appelé "NOMFILE" et d'extension "ABC" du répertoire où vous êtes. Si ce fichier n'existe pas dans votre répertoire mais qu'il est ailleurs vous devez préciser son emplacement en indiquant le chemin d'accès.

Exemple : DEL C:\WINDOWS\TEMP\ARCHIVE.ARC aura pour effet de détruire le fichier ARCHIVE.ARC du répertoire TEMP de Windows dans le lecteur C.
DEL ARCHIVE.ARC aura pour effet de détruire le fichier ARCHIVE.ARC se trouvant dans le répertoire où vous êtes.

Utilisation des Jokers... Comme nous l'avons vu pour la commande DIR, nous pouvons utiliser des jokers pour la commande DEL. Voici un petit rappel :
Les jokers sont sous la forme *
- S'ils sont placés au début du nom ou de l'extension cela veut dire que l'on ne connait pas le début du nom ou de l'extension du fichier a détruire
- S'ils sont placés en fin du nom ou de l'extension cela veut dire que l'on ne connait pas la fin du nom ou de l'extension du fichier a détruire
- S'ils sont placés à la place du nom ou de l'extension cela veut dire que l'on ne connait pas le nom ou l'extension du fichier a détruire
Exemple : DEL *BE.ANI détruira tous les fichiers dont le nom se finit par BE et dont l'extension est .ANI
DEL GLO*.*I détruira tous les fichiers dont le nom commence par GLO et l'extension se finit par un I
DEL GLOBE.* détruira tous les fichiers dont le nom est GLOBE
DEL *.* détruira tous les fichiers en vous demandant confirmation par O (oui) ou N (non). Astuce : si vous souhaitez détruire tous les fichiers d'un répertoire avec un script sans confirmation, faites de *.0* à *.Z* ...

c) Copier des fichiers >> vers le sommaire
COPY CHEZMOI.TXT C:\ : Copie le fichier CHEZMOI.TXT dans le disque dur C. Il faut donner le nom et l'extension du fichier a copier (ici CHEZMOI.TXT) ainsi que sa destination (dans notre cas, le lecteur C). Si le fichier que vous voulez copier n'est pas dans le répertoire où vous êtes, vous devez indiquer son chemin d'accès. Cette commande peut-être utilisée avec des jokers (voir commande DEL ou commande DIR).

Exemple : COPY C:\WINDOWS\TEMP\*.* A:\ copiera tous les fichiers du répertoire TEMP de Windows (se trouvant dans le lecteur C) dans votre disquette.
COPY A:\FILE.ZIP G:\TEMP\TEMP4 copiera le fichier FILE.ZIP de votre disquette dans le répertoire TEMP4 (se trouvant dans le répertoire TEMP du lecteur G).

En passant... Copy est une des commandes les plus utiles pour les fichiers d'installation. Ne la confondez pas avec COPY CON qui permet de créer un fichier !

Conclusion de la partie.
Vous devez maintenant pouvoir copier des fichiers avec COPY, en détruire avec DEL, et renommer des fichiers ou des répertoires avec RENAME. Bref, vous savez la plupart des choses à utiliser dans un futur programme d'installation.


II. DOSKEY

a) Qu'est ce que c'est ? >> vers le sommaire
C'est un petit programme qui a des utilisations diverses et variées. Il permet d'espionner gentiment ce qu'une personne fait sous MS-DOS en conservant toutes les traces, mais a aussi des utilisations complètement différentes a savoir créer des macros ou modifier des commandes existantes (pour la plus grande peur des utilisateurs)...

b) Comment le lancer ? >> vers le sommaire
C'est très simple, il vous suffit de taper "DOSKEY". Vous verrez alors une réponse "DOSKey Installé" signifiant qu'à présent, DOSKEY est opérationnel. Ce petit programme occupe seulement 4KO de votre Mémoire, c'est donc totalement insignifiant. Sous windows XP, en appuyant sur la flèche vers le haut, vous retrouverez la commande précédente tapée : c'est significatif d'un Doskey en route ; il est donc monté par défaut.

c) La fonction "espionne" de Doskey >> vers le sommaire
Après avoir lancé DOSKEY, tapez "Dir/w/p" puis appuyez sur entrée. Maintenant appuyez sur flèche vers le haut de votre clavier : la commande que vous venez d'entrer s'affiche ! Tapez maintenant VER, tapez sur entree, puis tapez MEM. Appuyez sur la flèche vers le haut : la commande MEM puisque vous venez de l'entrée s'affiche, appuyez encore sur cette flèche : la commande VER que vous avez entrée avant s'affiche, encore un petit coup sur la flèche vers le haut et vous verrez la commande Dir/w/p. Maintenant, appuyez sur la flèche vers le bas : vous revenez sur VER. Vous avez donc compris le principe, mais résumons le...

- La flèche vers le haut affiche les commandes éxécutées précédemment une à une. A chaque fois vous que vous appuyez dessus, la commande affichée est celle de plus en plus vieille.
- La flèche vers le bas vous permez, si vous êtes allé trop loin avec le flèche vers le haut, de redescendre vers les commandes que vous avez éxécutée plus récemment.

/HISTORY : Option applicable sur DOSKEY. Elle vous donne toutes les commandes que vous avez tapé depuis que DOSKEY est lancé, chaque commande étant sur une ligne.

Exemple : DOSKEY/HISTORY vous donnera le résultat suivant :

En passant... L'intérêt de DOSKEY avec cette mémorisation n'est pas l'espionnage, même si on peut l'utiliser "un peu" pour ça, mais la création de petits fichiers et la vérification des processus lors d'un programme d'installation. En effet, en glissant DOSKEY dans votre programme d'installation en MS-DOS à plusieurs étapes vous pouvez enregistrer le résultat du /history dans un fichier : si le programme d'installation a des problèmes, en regardant les fichiers d'enregistrement de /history vous pourrez savoir à peu prêt vers quel étape se situe le problème, et ce particulièrement si le fichier a une erreur qui le fait tourner "en boucle" dans une partie car de cette manière toutes les étapes se situant après la boucle n'auront pas de fichiers d'enregistrement. Mais nous verrons cela plus tard :-)

d) Gérer la taille des tampons DOSKEY >> vers le sommaire
DOSKEY a une certaine taille de Tampon pour enregistrer ce qui est fait en MS-DOS, celle-ci est par défaut de 512 octects. Il y aussi d'autres "petits tampons" dont les tailles sont de 15 et 128 octects.
/BUFSIZE=2000 : Option permettant de modifiant la taille du Tampon général de DOSKEY, qui passe ici de 512 à 2000 octects.
/KEYSIZE=50 : Option permettant de modifier la taille du tampon "de frappe continue au clavier", qui passe ici de 15 à 50 octects.
/LINE=400 : Option permettant de modifier la taille du tampon "de ligne d'édition", qui passe ici de 128 à 400 octects.

Exemple : DOSKEY/BUFSIZE=1500 /KEYSIZE=75 /LINE=375 aura pour effet d'augmenter la taille des trois tampons qui passent de 512, 15 et 128 octects à 1500, 75 et 375 octects. Généralement, il vaut mieux les augmenter que les rétrécir, sauf si ne voulez pas conserver de trace (auquel cas mettez tout à 0).

Note importante : si vous avez déjà utilisé DOSKEY, et surtout sa fonction /history, vous ne pourrez plus modifier la taille des tampons du DOSKEY en cours. La seule solution est d'utiliser "reinstall".

e) La solution REINSTALL >> vers le sommaire
La principale gêne avec Doskey est qu'il ne peut s'arrêter qu'à l'arrêt ou au redémarrage de l'ordinateur. Et si l'on ajoute à cela le fait qu'une fois que vous avez fait certaines opérations, il y a des paramètres qui deviennent inchangeables, cela pose un sérieux problème ! La solution est donc de réinstaller DOSKEY : cela fait une copie du programme mais le premier Doskey chargé est toujours en mémoire, devenant assez inutile...

/reinstall : Option permettant de réinstaller Doskey en faisant une copie. La place occupée en mémoire de la copie est de 4K et s'ajoute à l'original pour un total de 8K. Vous pouvez faire autant de copie que vous voulez, la taille de nos mémoires actuelles ne sera pas inquiétée par Doskey, à condition que vous évitiez les boucles infinies...

Exemple : Doskey/reinstall aura pour effet d'installer une copie de Doskey.
DOSKEY/REINSTALL /BUFSIZE=1500 /KEYSIZE=75 /LINE=375 permet de résoudre les problèmes de tampon et de modifier la taille des tampons sur une version de copie du Doskey, on peut dire qu'on lui force un peu la main ;-)...

f) Des macros avec Doskey >> vers le sommaire
Doskey permet de créer très rapidements des macros ; ce sont des lignes de commandes dont l'ensemble sera utilisé avec un seul mot. Imaginons qu'en disant "Disketprog" vous vouliez démarrer le programme compressé se trouvant sur votre disquette ? Il suffit de créer une macro qui réponde au nom "Disketprog" ; les opérations suivantes se déroulent :
- Le contenu de la disquette est copié dans un répertoire temporaire
- Le contenu copié est décompressé
- Le programme se trouvant dans le contenu décompressé est éxécuté (mieux que de tourner sur la disquette)

DOSKEY DISKETPROG=COPY A:\*.zip C:\TEMP : Permet de créer une macro qui s'éxécutera au nom "disketprog" et dont l'effet sera une ligne de commande "COPY A:\*.zip C:\TEMP". Nous voyons ici une seule ligne de commande et nous viendrons à des ensembles plus tard. Pour résumer tout ca, on peut synthétiser la macro sous une forme "DOSKEY NOM=INSTRUCTIONS"...

Exemple : DOSKEY TRIDISQUE=DIR/ON/S/B/L a pour effet de créer une macro que vous éxécuterez simplement en tapant "TRIDISQUE". Cette macro vous montrera la liste en minuscule et triée par ordre alphabétique de tous les fichiers de votre répertoire et de ses sous-répertoires.
DOSKEY VIDDISKET=DEL A:\*.* a pour effet de créer une macro que vous éxécuterez simplement en tapant "VIDDISKET". Elle supprimera tout le contenu de votre disquette.

En passant... Pour supprimer une macro, il faut marquer DOSKEY NOM= avec NOM étant le nom de la macro, et veillant bien à ne rien mettre après le signe = pour signifier qu'il n'y a pas d'instructions.

Exemple : DOSKEY TRIDISQUE= aura pour effet de supprimer la macro TRIDISQUE.

Petite blague... On peut créer des macros avec certains noms, y compris les noms de commandes déjà existantes. Cela donne l'impression que l'on peut modifier ces commandes...
Exemple : DOSKEY DIR=MEM. Avec cette macro portant le nom d'une commande existante "DIR", l'utilisateur en entrant la commande DIR aura les résultats de la commande MEM. Cependant, l'affolement ne durera pas ;-) En effet, une commande peut-être entrée avec des espaces tandis qu'une MACRO doit être exacte et donc sans espace. Explication : si l'utilisateur entre la commande "DIR" il aura les résultats de la macro "DIR", mais s'il entre la commande "           DIR" avec plusieurs espaces, il n'aura que les résultats de la commande "DIR". On résume : pour utiliser une commande portant le même nom qu'une macro il suffit de mettre des espaces avant la commande.

g) Macros multi-commandes à variables >> vers le sommaire
Nous venons de voir une macro rigide avec une seule commande associée à la macro et pas de possibilité pour l'utilisateur de spécifier quoi que ce soit. Maintenant, on va commencer par faire plusieurs commandes.

$t : Caractère permettant de relier deux instructions dans une même macro.

Exemple : DOSKEY DISKETSA=COPY A:\*.* C:\TEMP $t DEL A:\*.*.
Cette macro DISKETSA a pour effet de copier dans un premier temps le contenu de la disquette vers un répertoire TEMP du lecteur C, puis dans un second temps de détruire tout le contenu de la disquette. Il y a donc une commande de copie et une commande de destruction, les deux étant liées par le $t.

Si l'on veut qu'en entrant sa macro, l'utilisateur puisse faire appel à un paramètre en plus, il faut symboliser le paramètre par un $1 s'il y n'y en a qu'un que l'utilisateur doit entrer. Si l'utilisateur doit en entrer deux, le premier sera symbolisé par un $1 et le second par un $2. Si l'utilisateur doit en entrer trois, le premier sera symbolisé par un $1, le second par un $2, et le troisième par un $3. Etc. etc.

Exemple : DOSKEY JEVEUCOP=DEL A:\*.* $t COPY $1 A:\
L'utilisateur fait appel à la macro JEVEUCOP. Celle-ci va détruire le contenu de la disquette dans un premier temps puis, avec le caractère $t pour faire la liaison avec une autre commande, elle copiera quelque chose à spécifier par l'utilisateur dans la disquette. Donc l'utilisateur doit dire avec sa macro JEVEUCOP qu'est ce qu'il veut copier ; pour faire fonctionner la commande COPY, il faut un fichier ou des ensembles de fichiers.
Donc si l'utilisateur veut copier tout son répertoire TEMP du lecteur C, il marquera : JEVEUCOP C:\TEMP\*.*

On fait un autre exemple :
DOSKEY MADISKET=COPY A:\*.* C:\TEMP\DISKET1 $t RENAME C:\TEMP\DISKET1 $1
La macro MADISKET va copier tout le contenu de la disquette dans un répertoire DISKET1 (du répertoire TEMP dans le lecteur C) puis, en liant deux commandes toujours à l'aide de $t, le répertoire DISKET1 va être renommé en un nom que l'utilisateur doit choisir. Pour choisir ce nom l'utilisateur devra le spécifier en utilisant sa macro, il l'utilisera par exemple comme cela : MADISKET NEWCOPIE. En faisant comme ça, tout le contenu de la disquette sera copié dans un répertoire DISKET1 qui sera renommé ensuite en NEWCOPIE. Ceci dit, cette opération n'est pas ce qu'il y a de mieux comme macro car une macro est quelque chose qui sert souvent ; et tout le monde ne renomme pas des répertoires DISKET1 où il a copié sa disquette tous les jours.

Pour que l'exemple suivant ait vraiment une utilité on va apprendre une nouvelle petite commande :
CD \ : Permet d'aller à la racine du lecteur où vous êtes.

Maintenant voici un exemple si l'utilisateur doit spécifier deux choses :
DOSKEY PROGDISK=COPY $1 C:\TEMP $t C: $t CD \ $t CD TEMP $t $2
Cette macro a cette fois ci un peu plus de commande, voici son processus :
- On copie un fichier dont le chemin est donné par l'utilisateur au répertoire C:\TEMP
- On va dans le disque C
- On se positionne à la racine du disque C
- On va dans le répertoire TEMP
- On lance le fichier portant un nom donné par l'utilisateur
Maintenant, l'utilisation pratique. Vous avez sur un CD un fichier qui s'extrait automatiquement (c'est un peu stupide, mais nous viendrons plus tard s'il le faut à une macro qui inclue une phase de décompression) : vous allez le copier dans votre répertoire TEMP puis lancer ce fichier. Si l'utilisateur a sur son lecteur CD en lettre D un fichier EXTRAITM.EXE il va taper sa macro comme suit :
PROGDISK D:\EXTRAITM.EXE EXTRAITM
Cela va avoir pour effet de copier le fichier dans le répertoire TEMP, d'aller dans ce répertoire, et de lancer le fichier.

En passant... Le symbole $ est spécial a utiliser avec DOSKEY. Si pour une raison ou une autre vous le mettez dans la partie des commandes (après le signale "égal") et que vous voulez l'afficher tel quel à l'écran, il vous faudra le doubler. Par exemple pour afficher "Symbole $ pour Dollars", vous marquerez "Symbole $$ pour Dollars".

Récapitulatif des utilisations avec la commande DOSKEY.

DOSKEY/REINSTALL
Installe une copie de DOSKEY en mémoire pour 4KO de mémoire supplémentaire la copie.
DOSKEY/HISTORY Affiche tout ce que l'utilisateur a fait depuis le lancement de DOSKEY.
DOSKEY/BUFSIZE= Permet de choisir la taille du tampon général de doskey.
DOSKEY/KEYSIZE= Permet de choisir la taille du tampon de frappe continue au clavier de doskey.
DOSKEY/LINE= Permet de choisir la taille du tampon de ligne d'édition de doskey.
DOSKEY NOM=ACTION Fabrique une macro en utilisant DOSKEY. S'il y a plusieurs commandes dans l'action, chaque commande doit être séparée de l'autre par $t. S'il y a des paramètres que l'utilisateur doit entrer avec la macro, le paramètre dans la macro sera $1 s'il y en a un entrer, $2 s'il y en a deux à entrer, etc. etc.


Vous avez appris la suite de ce qu'un débutant devait savoir sur le MS-DOS dans cette seconde partie. Dans la Troisième partie, vous allez réaliser votre premier petit programme qui utilisera les fichiers batchs et de nouvelles notions.

Si vous avez des questions, n'hésitez pas à me contacter.


Aller au tutorial suivant >>