Cours MS-DOS, Interpréteur de commandes.
Réponse AJAX

Présentation

MS-DOS signifie Microsoft Disk Operating System. C'est un système mono-utilisateur, mono-tâche, très peu sécurisé. Concurrents compatibles : DR-DOS de Digital Research, FreeDOS. Fonctionne uniquement sur les processeurs compatibles Intel. MS-DOS a vu le jour en 1981 pour accompagner la sortie de l'IBM PC. Il a donc été fait en collaboration entre IBM et Microsoft.

MS-DOS a connu une évolution majeure grâce à l'ajout de Windows (version 1 à version 3.11), qui représentait en fait une sur-couche graphique du DOS.

Le successeur du couple MS-DOS 6.22 + Windows 3 a été Windows 95. Windows 95 est basé sur une nouvelle version du DOS (version 7). La version 6.22 représente donc la toute dernière version du MS-DOS autonome.

MS-DOS 8, en 2000, sous Windows ME, a été la toute dernière version du MS-DOS.

Depuis Windows XP (2001), on parle d'interpréteur de commandes, qui émule le système MS-DOS.

Comment accéder à l'invite de commande

Menu démarrer Accessoires Invite de commande.

Démarrer Exécuter cmd.

A quoi sert l'invite de commande de nos jours ?

De nos jours, avec la prolifération des systèmes d'exploitation avec interface graphique (MacOS, Windows, Linux + KDe, Linux + Gnome), il semble inutile et rébarbartif d'utiliser les lignes de commande. Elles sont pourtant indispensables dans plusieurs cas :

Organisation des fichiers sur le disque

Notion de répertoire

Un disque dur peut contenir une très grande quantité de fichiers (en général plusieurs dizaines de milliers). Pour faciliter l'organisation, on va classer ces fichiers dans des dossiers (ou répertoires, directories en anglais).

Pour donner l'emplacement d'un fichier, on utilise cette représentation (c'est très important, car on utilisera cette représentation très souvent sous DOS, mais aussi dans n'importe quel langage de programmation) : C:\Corel\Draw70\draw\Corel.exe

C:Représente la lettre de lecteur sur lequel se trouve le fichier. Les lettres de lecteur sont généralement A: et B: pour les lecteurs de disquette, C: pour le disque dur, D: pour le lecteur de CD-ROM.
\Signifie que le chemin que l'on indique ensuite commence à la racine du lecteur, et non pas à partir du répertoire courant (répertoire courant : expliqué plus loin).
Corel\Draw70\Chemin dans lequel se trouve le fichier indiqué.
Corel.exeNom du fichier, composé du nom proprement dit et de l'extension EXE, qui signifie par convention que ce fichier est un programme exécutable.

Notion de lecteur courant et de répertoire courant

C:\Windows>_

Ceci est l'invite du DOS. Elle nous indique que :

Lorsqu'on applique une commande à un fichier, par exemple DEL fichier :

Il y a un seul lecteur courant, mais il y a un répertoire courant par lecteur. Par exemple : le lecteur courant est C:, le répertoire courant sur C: est \Windows, le répertoire courant sur D: est \Vidéos.

Nous allons voir dans le paragraphe suivant la commande CD (Change Directory) qui permet de changer le répertoire courant.

Notion de chemin absolu et de chemin relatif

Un chemin absolu commence par \ (exemple : \Windows) ou par une lettre de lecteur puis \ (exemple : C:\Windows). Un tel chemin décrit la position d'un fichier par rapport à la racine du lecteur.

Un chemin relatif ne commence pas par \ (exemple : C:Application, Draw70\Custom ). Un tel chemin décrit la position d'un fichier par rapport au répertoire courant.

Notion de caractères joker

Certaines commandes (DIR, COPY, DEL, etc.) sont capables de travailler sur un ensemble de fichiers, et pas seulement sur un fichier unique. Pour préciser à une commande de s'appliquer à plusieurs fichiers à la fois, on utilise une écriture de nom de fichiers utilisant des caractères jokers, qui sont l'astérisque (*) et le point d'interrogation (?). Dans un nom de fichier :

Les principales commandes pour gérer les fichiers

CommandeRôleExemples d'utilisation
lecteur:Permet de changer le lecteur courant.A:
C:
DIR Affiche le contenu d'un répertoire
DIR (affiche tous les fichiers du répertoire courant)
DIR A: (affiche tous les fichiers du répertoire courant de la disquette)
DIR A:*.exe (affiche tous les fichiers ayant l'extension EXE).
CD Change le répertoire courant
(Change Directory)
CD Command (descend dans le sous-répertoire Command).
CD .. (remonte d'un répertoire)
MD Crée un répertoire
(Make Directory)
MD Rep (crée le sous-répertoire nommé Rep)
MD C:\Rep (crée un sous-répertoire Rep à la racine du lecteur C:)
RD Supprime un répertoire vide
(Remove Directory)
RD Rep
RD c:\Rep
COPYCopie un ou plusieurs fichiersCOPY fichier_source fichier_destination
MOVEDéplace un ou plusieurs fichiersCOPY fichier_source Chemin_destination
DELSupprime un ou plusieurs fichiersDEL A:\*.*
RENRenomme un fichierREN ancien_nom nouveau_nom
TYPEAffiche le contenu d'un fichier asciiTYPE C:\Autoexec.BAT
EDITAffiche de contenu d'un fichier ascii dans l'éditeur, pour le modifierEDIT C:\Autoexec.BAT
ATTRIBVisualise les attributs d'un fichier, permet également de les modifier.ATTRIB C:\Config.SYS
FORMATPermet de formater un disque ou une disquetteFORMAT C:
FORMAT A: /s (crée une disquette système)

Quelle est la commande qui permet de supprimer tous les fichiers cachés dans le répertoire courant ?

Votre réponse n°1

Quelle est la commande qui permet de supprimer tous les fichiers portant l'extension .tmp, dans C:\wamp64 et ses sous-répertoires. On veut que la commande ne nous demande aucune confirmation.

Votre réponse n°2

Redirection du résultat d'une commande.
Mise en pratique sur MYSQLDUMP et sur NET USER

Après une commande, si on rajoute : > nom_de_fichier, alors le résultat de la commande va être redirigé dans un fichier au lieu d'être affiché à l'écran.

Essayez en tapant successivement les commandes dir puis dir > C:\wamp64\dir.txt. Regardez le contenu du fichier C:\wamp64\dir.txt

Ceci est indispensable pour le bon fonctionnement de certaines commandes, par exemple la sauvegarde de bases de données avec l'utilitaire MYSQLDUMP inclu dans MySQL.

Sur votre ordinateur, cherchez et inscrivez ici l'emplacement des exécutables (dossier bin) de MySQL :

Votre réponse n°3

Exécutez et notez la commande MS-DOS qui vous permet de vous placer directement dans ce répertoire (c'est à dire de faire de ce répertoire le répertoire par défaut pour les prochaines commandes) :

Votre réponse n°4

Lancez la commande qui permet de sauvegarder la base de données mysql : mysqldump mysql -uroot. Quel est la nature du résultat qui s'affiche à l'écran (soyez précis : qu'est-ce que c'est, à quoi ça sert) ?

Votre réponse n°5

En utilisant le principe de redirection du résultat d'une commande, Ecrivez la commande qui permet de sauvegarder la BDD mysql dans le fichier C:\wamp64\mysql.sql.

Votre réponse n°6

En affichant l'aide de la fonction mysqldump, écrivez quelle commande vous utiliseriez pour sauvegarder uniquement la table user de la BDD mysql.

Votre réponse n°7

Les fichiers de commandes

Principes

Les fichiers de commandes permettent de créer des "macro-commandes", c'est à dire qu'on peut créer une nouvelle commande qui va être en fait un succession de commandes DOS élémentaires. On appelle ça le traitement "par lot" (Batch en anglais).

En fait, la suite de commandes à exécuter sera enregistrée dans un fichier ayant l'extension BAT. Pour exécuter cette suite de commandes, il suffira de taper le nom du fichier qui les contient.

Par exemple, si on dispose du fichier ACCUEIL.BAT suivant :
Nom du fichierContenu du fichier
Accueil.BATCLS
ECHO Bonjour
DATE
TIME

Alors le simple fait de taper la commande ACCUEIL.BAT (ou ACCUEIL) va exécuter toutes les commandes contenues dans ce fichier. ACCUEIL est donc une macro-commande.

Terminologie : les termes suivants sont synonymes : macro-commandes, fichier batch, fichier de commandes, fichier BAT (fait référence à l'extension de ces fichiers).

Paramétrage

De la même façon que les commandes MS-DOS reçoivent des paramètres, nos fichiers de commandes peuvent en recevoir également. Dans le fichier de commande, le symbole %1 va être remplacé par le premier paramètre, le symbole %2 va être remplacé par le deuxième paramètre, et ainsi de suite.

Par exemple, voici un script Archive.bat qui archive un fichier dont le nom est passé en paramètre, et désactive son attribut d'archive.

COPY %1 C:\Sauvegarde\ ATTRIB -a %1 ECHO Le fichier %1 a été archivé.

Voici le même script avec une petite variante : on passe en paramètre le nom du fichier à archiver, ainsi que le répertoire contenant les archives (on utilise donc deux paramètres au lieu d'un).

COPY %1 %2\ ATTRIB -a %1 ECHO Le fichier %1 a été archivé dans %2

Exemple d'appel du premier fichier de commandes :
Archive MonFichier.TXT (Archive est le nom de la macro-commande, MonFichier.TXT est le paramètre).

Exemple d'appel du deuxième fichier de commandes :
Archive2 MonFichier.TXT D:\Sauvegarde (Archive2 est le nom de la macro-commande, MonFichier.TXT est le premier paramètre, D:\Sauvegarde est le deuxième paramètre).

Exécution depuis un langage de programmation

Exécuter des fichiers de commandes ou d'autres fichiers exécutables, à partir d'un langage de programmation, va nous permettre d'automatiser certaines tâches.

L'exécution d'un fichier à partir de Visual Basic.NET se fait grâce à l'instruction Shell :
Shell ("fichier de commandes ou exécutable, et son paramétrage")

Comme toujours, le fichier de commandes ou le fichier exécutable sera précédé du chemin d'accès vers ce fichier. Pour savoir quel est le répertoire courant lorsque vous exécutez une application Visual Basic, exécutez l'instruction Visual Basic suivante :
MsgBox(CurDir)

L'exécution d'un fichier à partir de PHP se fait grâce à l'instruction exec (ou autres) :
exec ("Fichier de commandes ou exécutable, et son paramétrage")

Application : écriture d'un script de création des nouveaux utilisateurs

Le travail d'un administrateur réseau est long et répétitif pour chaque utilisateur qu'il crée, même si on le fait dans l'interface graphique de Windows ! On peut automatiser ces tâches en créant un fichier de commandes approprié.

Pour cet atelier, vous aurez besoin des commandes NET USER, NET LOCALGROUP, MKDIR, CACLS.

Si vous tapez la commande NET USER sans paramètre, qu'obtenez-vous ? (ne copiez pas ce qui s'affiche à l'écran, mais notez la nature du résultat)

Votre réponse n°8

Quelle est la commande à taper pour obtenir l'aide complète de la commande NET USER (attention : NET USER /? ne convient pas car cela donne une aide partielle)

Votre réponse n°9

Quelle est la commande MS-DOS qui permet de créer l'utilisateur toto avec le mot de passe toto ?

Votre réponse n°10

Quelle est la commande MS-DOS qui permet de rajouter l'utilisateur toto au groupe Administrateurs ?

Votre réponse n°11

Créez le répertoire c:\wamp64\users.

Quelle est la commande MS-DOS qui permet de créer le répertoire de travail C:\wamp64\users\toto ?

Votre réponse n°12

Quelle est la commande MS-DOS qui permet de donner le droit de modification à l'utilisateur toto sur le répertoire C:\wamp64\users\toto ?

Votre réponse n°13

Sur Internet, trouvez une astuce pour contourner la demande de confirmation de la commande précédente.

Votre réponse n°14

Fusionnez toutes ces commandes dans un fichier de commandes creer_user.bat, qui sera appelé de la façon suivante :
creer_user nom-de-l'utilisateur-à-créer
Vous devrez donc supprimer "toto" de votre fichier de commandes, pour le remplacer par le premier paramètre passé par l'utilisateur.

Votre réponse n°15

Essayez votre fichier de commandes en créant l'utilisateur titi.

On peut imaginer aller plus loin en créant pour chaque nouvel utilisateur : son espace Web, son compte FTP, sa base de données MySQL, etc. Tout ceci est faisable dans un fichier de commande.

La commande AT : plannification de tâches

Il existe une commande très utile qui permet de créer des plannifications, c'est à dire exécuter à intervalle régulier un programme, ou un fichier de commandes MS-DOS.

Vous entendrez souvent parler de tâches CRON, car la commande sous Linux pour créer ces plannifications est CRON au lieu de AT.

Chez moi, la plannification est utilisée pour :

Par exemple, voici comment exécuter un fichier de commandes tous les jours à 4h00 :

C:\>at 04:00 /EVERY:L,Ma,Me,J,V,S,D C:\Planifiée.bat
Tâche ajoutée avec ID = 1

C:\_

Pour voir la liste des tâches plannifiées :

C:\>at
État    ID  Jour                    Heure         Ligne de commande
-------------------------------------------------------------------------------
        1   Chaque L Ma Me J V S D  04:00         C:\Planifiée.bat

C:\>_

Pour supprimer une tâche (où 1 est l'ID de la tâche) :

C:\>at 1 /delete

C:\>_

Pour supprimer toutes les tâches (/yes permet d'éviter la demande de confirmation) :

C:\>at /delete /yes

C:\>_

Donnez la commande qui permet d'exécuter C:\wamp64\sauvegarde.bat chaque 1er et 15ème jour du mois, à 2 heures du matin.

Votre réponse n°16

L'invite de commande

L'invite de commande (par exemple : c:\Windows apparaît devant les commandes que vous saisissez. Elle ne fait pas partie des commandes. Elle est là juste pour vous indiquer l'emplacement courant, ainsi vous savez quel est le répertoire courant, et par conséquence à partir de quel répertoire vont s'appliquer les chemins relatifs.

Cette invite de commande n'est pas figée, et est facilement modifiable grâce à la commande prompt, dont voici l'aide :

C:\>prompt /?
Change l'invite de cmd.exe.

PROMPT [texte]

  texte  spécifie une nouvelle invite.

L'invite peut être composée de caractères normaux et des codes suivants :

  $A     & (signe &)
  $B     | (barre verticale)
  $C     ( (parenthèse gauche)
  $D     date actuelle
  $E     code ECHAP (code ASCII 27)
  $F     ) (parenthèse droite)
  $G     > (signe supérieur)
  $H     retour arrière (efface le caractère précédent)
  $L     < (signe inférieur)
  $N     lecteur en cours
  $P     lecteur et chemin d'accès en cours
  $Q     = (signe égal)
  $S     (espace)
  $T     heure en cours
  $V     numéro de version de Windows XP
  $_     retour chariot et saut de ligne
  $$     $ (signe dollar)

Si les extensions de commandes sont activées, la commande PROMPT prend en
charge les caractères de mise en forme suivants :

  $+  Zéro ou plus de signes plus (+), en fonction de la profondeur de
      la pile de répertoires PUSHD, un caractère par niveau niveau.

  $M  Affiche le nom distant associé à la lettre de lecteur actuelle
      ou une chaîne vide si le lecteur n'est pas un lecteur réseau.

Grâce à l'aide ci-dessus, donnez la commande prompt qui permettent d'obtenir les invites de commande suivantes :

Il est 19:02:09,20 heure :-)
Votre réponse n°17
Il est 19:04:12,93 Heure
Microsoft Windows XP [version 5.1.2600]
Le lecteur courant est K
Le chemin courant est K:\
Tape ici ta comm :
Votre réponse n°18