Les commandes en ligne sont issues de l'ancêtre de Windows : le système d'exploitation MS-DOS (Microsoft Disk Operating System). C'était un système d'exploitation non fenêtré, mono-tâche.
Le plus rapide : touche Windows cmd
Entrée.
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 :
ipconfig
est plus rapide que des recherches dans les fenêtres Windows.
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).
Dans le chemin d'accès suivant : C:\Program Files\7-Zip\7z.exe
, on trouve :
Program Files
.exe
montre que c'est une application (un fichier exécutable).
On travaillera beaucoup aussi en chemins relatifs. C'est le chemin par rapport à l'emplacement courant.
Grâce à l'explorateur de fichier, recherchez l'emplacement du fichier mspaint.exe.
Faites un clic droit dessus puis "ouvrir l'emplacement du fichier".
Notez ici l'emplacement de mspaint.exe :
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
.
C:\wamp64>D: D:\images>
D'après la capture d'écran ci-dessus : au début, quel est le lecteur par défaut ?
Quel est le chemin par défaut sur le disque C ?
Quel est le chemin par défaut sur le disque D ?
À la fin, quel est le lecteur par défaut ?
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:Apache, www\mon_site_web\images ). Un tel chemin décrit la position d'un fichier par rapport au répertoire courant.
Pour préciser un chemin relatif, on peut descendre dans les sous-dossiers (sous-dossier/), mais on peut aussi remonter dans les dossiers parents grâce à .. (point point). Par exemple :
C:\windows>cd ../wamp64/www C:\wamp64\www>
Je suis dans C:\wamp\www\site1\images\backgrounds
. Quelle répertoire relatif me premet de désigner le répertoire c:\wamp\www\site1\js
?
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 :
Parmis les fichiers suivants, combien vont être concernés par la commande DEL image1*.jpg ?
image1.jpg
image12.gif
image13.jpg
images14.jpg
La commande net use permet de créer un lecteur réseau, à l'instar de votre Z:. Elle fonctionne ainsi :
net use lettre-de-lecteur: \\chemin_réseau /persistent:yes
Le /persistent:yes
est facultatif et fait en sorte que le lecteur existera toujours au démarrage de l'ordinateur.
Créez des lecteurs réseaux persistents :
K: vers le répertoire "_Commun" de votre promo :
R: vers le répertoire "_Ressources" de votre promo :
Les moyens les plus répandus pour obtenir la documentation sur une commande sont :
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 tout autre mémoire de masse | FORMAT C: FORMAT A: /s (crée un support bootable sous MS-DOS) |
Ces questions nécessitent de bien chercher dans la documentation de la fonction DEL.
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.
Grâce à ipconfig, dites quelle est l'adresse IP de votre machine :
Grâce à route print, dites quelle est l'adresse de passerelle utilisée pour contacter le réseau 0.0.0.0 de masque 0.0.0.0 (qui signifie : "tous les autres réseaux") :
Grâce à arp -a, dites quelle est l'adresse physique de mon serveur 10.53.130.250 (s'il n'apparait pas dans la liste, commencer par le pinguer puis refaite la commande arp):
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\www.
Quelle est la commande MS-DOS qui permet de créer le répertoire de travail C:\wamp64\www\toto ?
Quelle est la commande MS-DOS qui permet de donner le droit de modification à l'utilisateur toto sur le répertoire C:\wamp64\www\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 :