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.
Menu démarrer Accessoires
Invite de commande.
Démarrer Exécuter
cmd.
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 :
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.exe | Nom du fichier, composé du nom proprement dit et de l'extension EXE, qui signifie par convention que ce fichier est un programme exécutable. |
Ceci est l'invite du DOS. Elle nous indique que :
Lorsqu'on applique une commande à un fichier, par exemple DEL fichier
:
DEL \Windows\System\a.dll
), alors la commande va rechercher le fichier sur le lecteur courant, soit C:
dans notre exemple.DEL C:a.dll
ou DEL a.dll
), la commande va chercher le fichier dans le répertoire courant.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.
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.
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 :
Commande | Rôle | Exemples 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 |
COPY | Copie un ou plusieurs fichiers | COPY fichier_source fichier_destination |
MOVE | Déplace un ou plusieurs fichiers | COPY fichier_source Chemin_destination |
DEL | Supprime un ou plusieurs fichiers | DEL A:\*.* |
REN | Renomme un fichier | REN ancien_nom nouveau_nom |
TYPE | Affiche le contenu d'un fichier ascii | TYPE C:\Autoexec.BAT |
EDIT | Affiche de contenu d'un fichier ascii dans l'éditeur, pour le modifier | EDIT C:\Autoexec.BAT |
ATTRIB | Visualise les attributs d'un fichier, permet également de les modifier. | ATTRIB C:\Config.SYS |
FORMAT | Permet de formater un disque ou une disquette | FORMAT 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 ?
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.
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 :
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) :
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) ?
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
.
En affichant l'aide de la fonction mysqldump, écrivez quelle commande vous utiliseriez pour sauvegarder uniquement la table user de la BDD mysql.
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 fichier | Contenu du fichier |
---|---|
Accueil.BAT | CLS 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).
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.
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).
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é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")
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)
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)
Quelle est la commande MS-DOS qui permet de créer l'utilisateur toto avec le mot de passe toto ?
Quelle est la commande MS-DOS qui permet de rajouter l'utilisateur toto au groupe Administrateurs ?
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 ?
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 ?
Sur Internet, trouvez une astuce pour contourner la demande de confirmation de la commande précédente.
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.
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.
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.
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 :