Tous les systèmes d’exploitation offrent un mode ligne de commande. Le mode ligne de commande permet à un utilisateur de communiquer, par voie de commandes textuelles, avec le système d’exploitation. Le mode ligne de commande, aussi parfois appelé mode console, permet de contrôler et configurer beaucoup d'aspects du système d'exploitation, sans utiliser l'interface graphique ni la souris. Ces commandes sont donc parfaites pour l'automatisation, puisqu'elles peuvent être placées dans un script qui les exécutera une à une.
Le mode console repose sur l’existence d’un programme spécial nommé l’interpréteur de commandes. Sous DOS (et les premières versions de Windows basées sur DOS), ce programme portait le nom COMMAND.COM. Dans la branche NT (donc NT, 2000, 2003 et suivants, XP et suivants), un outil plus moderne et plus puissant nommé CMD.EXE est mis à votre disposition.
Lorsque vous entrez une commande à la console, vous ne communiquez pas directement avec le système d’exploitation; vous demandez plutôt à l’interpréteur de commandes (ici, CMD.EXE) de communiquer avec le système d’exploitation pour vous. À l’aide d’un interpréteur de commandes, en connaissant l’ensemble de ses commandes et en sachant les utiliser, vous pouvez communiquer de façon assez formelle avec le système d’exploitation.
Dans le monde Windows, l'interpréteur de commande n'est pas sensible à la casse, c'est-à-dire que vous pouvez utiliser des majuscules ou minuscules comme bon vous semble sans que ça n'affecte les commandes.
Faites simplement Démarrer->Exécuter (ou faites Drapeau-R sur votre clavier), puis tapez cmd. Vous atteindrez une fenêtre semblable à celle-ci:
Lorsque cmd attend vos commandes, il indique qu'il est prêt en vous affichant une invite (aussi appelée prompt en anglais). Cette invite contient en fait le chemin du dossier (ou répertoire) où vous vous trouvez, suivi du symbole ">". Lorsque vous tapez une commande, cette dernière est exécutée, son résultat est affiché et l'invite vous revient, indiquant que cmd est prêt à accepter une nouvelle commande.
En même temps, vous savez toujours dans quel dossier vous vous trouvez. Dans mon cas (voir image ci-haut), il s'agit du dossier Etienne Forest qui est dans le dossier Users qui se trouve dans la racine du disque C:.
En effet, dans le mode console, on se trouve toujours quelque part. Par défaut, les commandes que l'on utilisera affecteront les fichiers qui se trouvent dans le même dossier que nous. On verra toutefois qu'en précisant un chemin complet, on pourra tout de même affecter des fichiers qui se trouvent ailleurs si on le souhaite. Mais l'endroit où l'on se trouve demeure important pour bien formuler nos commandes.
Vous savez bien entendu déjà que chaque lecteur sur un ordinateur possède une lettre qui le représente. Un lecteur est toujours identifié par une lettre suivie d'un deux points, comme C:, D: ou F:.
On peut se déplacer d'un disque à l'autre en tapant simplement la lettre du lecteur où on veut aller, suivie du deux points. C'est tout ce qui est nécessaire et c'est une commande en soi. Par exemple:
Z:
nous amène sur le disque Z:.
C:
nous ramène sur le disque C:. Notez que cmd mémorise le dernier dossier qu'on a visité sur chaque disque et nous ramène là. Si on n'a jamais été sur un disque encore, il nous placera dans sa racine.
Le dossier racine d'un lecteur est représenté par une barre oblique inversée (backslash). Par exemple, C: représente le disque dur et C:\ représente le dossier racine du disque dur. Ce dossier est le premier dossier du disque et se comporte comme tout autre dossier: il peut contenir des fichiers et d'autres dossiers, démarrant ainsi une arborescence (d'où son nom de racine).
Si on veut identifier un dossier (ou répertoire, ce sont des synonymes), on peut écrire son chemin en commençant par la lettre du lecteur, le deux points, le backslash, puis en énumérant tous les dossiers qu'il faut traverser pour atteindre le dossier voulu (qu'on sépare avec d'autres backslashes). Par exemple, le chemin dans lequel je me trouve dans l'exemple d'en haut est:
C:\Users\Etienne Forest
Ce qui signifie : sur le disque C:, à partir de la racine, entrer dans le dossier Users qui s'y trouve, puis aller dans Etienne Forest, qui se trouve dans Users.
Le chemin de mon dossier "Documents" est le suivant:
C:\Users\Etienne Forest\Documents
En effet, le dossier Users contient un dossier pour chaque utilisateur enregistré sur l'ordinateur, et c'est dans ces dossiers que les utillisateurs conservent leur profil, incluant leurs documents.
On peut se déplacer d'un dossier à l'autre en utilisant la commande cd. On fait simplement cd suivi du chemin du dossier qu'on veut atteindre:
cd C:\windows\system32
Tous les exemples de chemins donnés depuis le début sont des chemins absolus, c'est-à-dire des chemins qui débutent par la racine d'un disque et qui énumèrent tous les dossiers à traverser, dans l'ordre. Peu importe où j'étais au moment de taper la commande, je me retrouve au même endroit : à l'endroit désigné par le chemin.
Notez que si on a l'intention de changer de dossier, mais en restant sur le même disque, la lettre du lecteur n'est pas obligatoire. Par exemple, je peux aussi écrire ceci et arriver au même endroit, si je suis déjà sur le disque C:
cd \windows\system32
Le backslash, quant à lui, est essentiel : il représente le point de départ du chemin, la racine.
Je peux aussi utiliser un chemin relatif, c'est-à-dire que je ne débute pas mon chemin par la racine. Si je ne mets pas de backslash au début de mon chemin (ni de lettre de lecteur), c'est un chemin relatif qui débutera dans le répertoire courant, c'est-à-dire dans le dossier où je me trouve au moment de taper la commande. Par exemple, si je fais:
cd projets
je me déplacerai alors dans le dossier projets qui se trouve juste en dessous de mon dossier courant, ou à l'intérieur de mon dossier courant. Ce chemin est relatif car relativement à mon point de départ, je ne finirai pas nécessairement toujours au même endroit. Si je suis dans C:\Users\Etienne Forest\Documents quand je tape la commande, j'aboutirai dans C:\Users\Etienne Forest\Documents\projets. Si je suis dans C:\Windows et que je tape la même commande, je me retrouverai dans C:\Windows\projets (à condition que ces répertoires existent, bien entendu). Ma destination sera relative à mon point de départ.
Je peux faire un chemin relatif plus long:
cd projets\algo\chapitre 5
Ici, je me déplacerai dans le dossier projets qui se trouve juste sous mon répertoire courant, puis dans le dossier algo qui se trouve dans projets, et finalement dans le dossier chapitre 5 qui se trouve dans algo, le tout en une seule commande! J'énumère encore une fois tous les dossiers que je veux traverser pour atteindre le point que je veux, en les séparant par des \, mais je ne commence pas par la racine -- le point de départ impllicite sera le dossier où je suis..
Qu'arrive-t-il si je veux remonter vers mon répertoire parent? Par exemple, si je suis dans C:\Windows\system32 et que je veux aboutir dans C:\Windows? Évidemment, je peux faire (en mode absolu):
cd C:\Windows
ou
cd \Windows
ce qui revient au même (puisque je n'ai pas besoin de répéter la lettre du lecteur). Mais en mode relatif? La réponse:
cd ..
Le symbole .. -- à ne pas confondre avec : -- représente le répertoire parent du répertoire courant. Peu importe où je suis, si je fais cd .. je me retrouve dans mon répertoire parent, c'est à dire dans le dossier qui contient le dossier où je suis. On dira souvent qu'on "remonte", qu'on se retrouve dans le répertoire "d'au-dessus", dans l'arborescence. Comme l'endroit exact où j'aboutis dépend de mon point de départ, c'est donc un chemin relatif!
Il est possible de construire un chemin plus complexe en partant du ..
cd ..\projets
Ceci signifie: monte dans le dossier parent, puis redescends dans le dossier projets qui se trouve en dessous.
On peut même accumuler les .. pour remonter de plusieurs niveaux:
cd ..\..\..
De la même façon (mais moins couramment utilisé), . représente le répertoire courant. On peut construire un chemin à partir de là. Du coup:
cd .\salut\coucou
est équivalent à
cd salut\coucou
Finalement, le chemin vers un fichier fonctionne exactement de la même façon que celui vers un dossier, sauf qu'on finit par le nom du fichier. Par exemple:
C:\Documents and Settings\Regis\Mes Documents\chemins.txt
représente le chemin du fichier chemins.txt qui se trouve dans Mes Documents.
Évidemment, la commande cd demande un chemin vers un dossier et non vers un fichier! Par contre, plusieurs commandes utiliseront des chemins vers des noms de fichiers, on le verra plus loin.
Le nom du fichier se termine généralement par une extension, c'est-à-dire un point suivi de trois ou quatre lettres représentant le type du fichier (et que Windows utilise pour déterminer l'application à démarrer pour ouvrir le fichier). Par exemple, un document Word porte l'extension .doc ou .docx, un fichier texte simple, .txt, une image .jpg, .jpeg ou .bmp...
L'extension fait partie du nom du fichier et il faut l'utiliser lorsque l'on veut nommer le fichier correctement. Si vous ne voyez pas les extenstions de vos fichiers dans l'explorateur Windows, cliquez sur "Affichage", puis cochez la case "Extensions de noms de fichiers".
Une commande texte a la syntaxe grossière suivante:
NOM PARAMÈTRES
où NOM est le nom de la commande (par exemple DIR, COPY, DEL, MD, etc -- voyez plus bas) et PARAMÈTRES est une liste de "mots" qui indiquent ce sur quoi la commande opère. Une commande peut avoir zéro, un ou plusieurs paramètres. Bien souvent, l'ordre des paramètres importe peu.
On sépare une commande de ses paramètres (et on sépare les paramètres entre eux) à l’aide d'espaces.
Exemple de commande sans paramètre:
DIR
La commande DIR liste le contenu d’un répertoire. En l’absence de paramètres, le comportement par défaut de la commande est de lister le contenu du répertoire courant (le répertoire dans lequel on se trouve en ce moment).
Exemples de commandes avec un seul paramètre:
DIR /p
La commande DIR liste le contenu d’un répertoire. Le paramètre ici est un modificateur (/p signifie, pour la commande DIR, de produire un affichage page par page avec une pause après chacune d'elles).
DIR ..
La commande DIR liste le contenu d’un répertoire. Le paramètre ici est un nom de répertoire relatif (.. signifie le parent du répertoire courant, quel qu’il soit).
DIR C:\WINDOWS
La commande DIR liste le contenu d’un répertoire. Le paramètre ici est un nom de répertoire spécifié de manière absolue (à partir de la racine).
Exemples de commandes avec deux paramètres:
DIR .. /p
La commande DIR liste le contenu d’un répertoire. Les paramètres ici sont un modificateur (/p signifie, pour la commande DIR, de produire un affichage page par page) et une indication relative de répertoire (..). Ces paramètres auraient très bien pu être inversés. C'est souvent le cas -- l'ordre des paramètres n'a généralement pas d'importance.
DIR C:\WINDOWS /w
La commande DIR liste le contenu d’un répertoire. Les paramètres ici sont un modificateur (/w signifie, pour la commande DIR, de produire un affichage en mode largeur de page (page width), c'est-à-dire avec moins d'information pour chaque fichier, avec plusieurs colonnes -- on voit la différence lorsqu'on affiche un dossier qui a beaucoup de contenu) et une indication absolue de répertoire.
COPY A.TXT C:\YO\MAN
La commande COPY fait une copie du fichier passé comme premier paramètre dans le répertoire passé comme deuxième paramètre. Ici, on demande de copier le fichier a.txt qui se trouve dans le répertoire courant (chemin relatif!) dans le répertoire man qui se trouve dans le répertoire yo qui se trouve dans la racine du disque C: (chemin absolu!). On peut toujours utiliser des chemins relatifs ou absolus comme bon nous semble et chaque paramètre n'a pas besoin d'être fourni de la même façon que les autres...
Notez que la commande COPY peut accepter comme deuxième paramètre un répertoire de destination ou un nom de fichier. Par exemple, j'aurais pu faire:
COPY A.TXT C:\YO\MAN\B.TXT
Le fichier a.txt du répertoire courant aurait alors été copié dans C:\yo\man et la copie aurait été nommée b.txt, en une seule étape. Si on ne fournit pas de nom au fichier de destination, il gardera le nom de l'original.
Les commandes copy et move fonctionnent de la même façon: le premier paramètre indique la source (donc le fichier à copier/déplacer). Le deuxième paramètre indique la destination (donc le dossier dans lequel placer la copie/le fichier déplacé). Si la destination se termine par un nom de fichier, le fichier final est renommé au passage. Si la destination se termine par un nom de dossier, le fichier final gardera son nom original.
Notez que le nom du fichier, s'il est là, n'est pas un troisième paramètre! Il fait partie du chemin donné comme destination, comme deuxième paramètre, et est donc relié à ce chemin par un \.
Ci-dessous, vous trouverez une courte liste des commandes élémentaires de l’interpréteur de commandes texte du système d’exploitation. La clé du succès pour plusieurs de ces commandes est de savoir spécifier correctement les noms de fichiers et de répertoires sur lesquels on désire agir. Toutes les commandes n'implémentent pas nécessairement les mêmes modificateurs (switches), mais le /? est très courant. Taper le nom d'une commande suivi de /? affiche généralement de l'aide sur la commande, avec quelques explications (parfois courtes) et même des exemples (si vous êtes chanceux!). Sinon, la commande HELP (la première sur la liste ci-dessous) permet également d'aller chercher de l'aide sur une commande voulue.
Commande |
Rôle |
Paramètres possibles |
Exemples |
HELP |
Affiche l'aide en ligne sur les commandes textes. |
Le nom d'une commande. |
HELP |
ECHO |
Affiche à l’écran un message |
Le message à afficher |
ECHO J'aime mon prof! |
DIR |
Liste les fichiers et les répertoires spécifiés de la manière indiquée |
/p, /w, /o, une spécification de fichier ou de répertoire |
Voir exemples ci-dessus |
COPY |
Copie une source vers une destination. Les deux peuvent être des fichiers ou des répertoires |
Une spécification de fichier ou de répertoire source, et une spécification de fichier ou de répertoire destination |
COPY *.* C:\BACKUP |
MD |
Créer un répertoire |
Une spécification de répertoire (celui à créer, qui doit ne pas exister au préalable) |
MD UN_REP |
RD |
Supprimer un répertoire |
Une spécification de répertoire (celui à supprimer, qui doit exister au préalable). /s permet de supprimer les sous-répertoires contenus dans le répertoire (une arborescence complète peut alors être supprimée d'un coup). |
RD NOUV_REP |
CD |
Changer le répertoire de travail sur une unité de disque |
Une spécification de répertoire (celle de destination, c’est-à-dire le répertoire de travail désiré une fois la commande exécutée) |
CD .. |
DEL |
Supprimer un fichier |
Une spécification de fichier. Si on utilise plutôt un nom de répertoire, son contenu sera supprimé, mais le répertoire lui-même continuera d'exister. Les sous-répertoires et leur contenu ne sont pas affectés, sauf si l'on utilise le modificateur /s. |
DEL *.VIR |
TYPE |
Lister le contenu d’un fichier texte |
Une spécification de fichier |
TYPE C:\WINDOWS\WIN.INI |
MOVE |
Déplacer une source vers une destination. Les deux peuvent être des fichiers ou des répertoires |
Une spécification de fichier ou de répertoire source, et une spécification de fichier ou de répertoire destination |
MOVE *.BMP C:\IMAGES\BITMAPS |
RENAME |
Renommer un fichier ou un répertoire |
Une spécification de fichier ou de répertoire source, et une spécification de fichier ou de répertoire destination |
RENAME A.BAK A.COM |