interpréteur de commandes Windows

De Vulgum Techus
Version du 15 janvier 2021 à 02:36 par Admin2 (discuter | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : Navigation, rechercher
Lien court vers cette page : https://vt.cx/icW
QR code vers cette page : https://vt.cx/icW.qr
Raccourci vers cette page : CMD

Présentation

  • La commande CMD ou cmd démarre une nouvelle instance de l'interpréteur de commandes de Windows 2000, XP, Vista, 7, 8, 8.1 et 10
  • L'interpréteur de commandes est un shell hérité du système d'exploitation MS/DOS dont il conserve toutes les particularités
  • La commande est gérée par cmd.exe situé dans le dossier %windir%\system32\
  • PowerShell est une version beaucoup plus élaborée de l'interpréteur de commandes → voir PowerShell

Exécution

Windows toutes versions

  • Méthode 1 → + R et saisi de CMD ou cmd ou cmd.exe et Entrée ou Alt + Maj + Entrée en mode administrateur
  • Méthode 2 → et saisi de CMD ou cmd ou cmd.exe et Entrée ou Alt + Maj + Entrée en mode administrateur
  • Méthode 3 → ouvrir un dossier et saisir CMD ou cmd ou cmd.exe dans la barre de navigation du dossier
  • Méthode 4 → ouvrir un dossier et saisir %ComSpec% dans la barre de navigation du dossier
  • Méthode 5 → créer un raccourci avec %ComSpec% dans le champs Cible
  • Méthode 6 → créer un raccourci avec %windir%\system32\cmd.exe dans le champs Cible


Pour les méthodes 5 et 6, il est possible de s'assurer que l'interpréteur de commandes s'ouvre avec les privilèges administrateur en procédant comme suit :

  • Clic droit sur le raccourcis
  • Choisir Exécuter en tant qu'administrateur
  • Ceci se vérifie si la mention Administrateur:DOS apparaît dans la barre d'état de la console de commande.


Pour que mode administrateur soit effectif à chaque lancement de CMD.EXE, il faut modifier une clé de registre comme suit :

Windows 10

  • + X C

Paramètres

Ses paramètres sont :

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF][[/S] [/C | /K] chaîne]
/C Exécute la commande donnée par la chaîne de caractères puis se termine
/K Exécute la commande donnée par la chaîne de caractères puis reste actif
/S Modifie le traitement de la chaîne après /C ou /K (voir ci-dessous)
/Q Exécute (sans interactions) la commande donnée puis reste actif
/D Désactive l'exécution de AutoRun à partir du Registre (voir ci-dessous)
/A Redirige la sortie de commandes internes vers un canal ou un fichier ANSI
/U Redirige la sortie de commandes internes vers un canal ou un fichier UNICODE
/T:fg, Change la couleur du premier ou de l'arrière plan (voir aussi COLOR /?)
/E:ON Active les extensions de commande (voir ci-dessous)
/E:OFF Désactive les extensions de commande (voir ci-dessous)
/F:ON Active les caractères de fin des noms de fichiers et de répertoires (voir ci-dessous)
/F:OFF Désactive les caractères de fin des noms de fichiers et de répertoires (voir ci-dessous)
/V:ON Active l'expansion retardée des variables d'environnement en utilisant c comme délimitation. 
Par exemple, /V:ON permet à !var! de développer la variable var à l'exécution. La syntaxe var développe les variables 
lorsqu'elles sont entrées, ce qui est différent lorsque utilisé à l'intérieur d'une boucle FOR.
/V:OFF Désactive l'expansion retardée des variables d'environnement.

Les commandes multiples séparées par le séparateur && sont acceptées comme une chaîne si elles sont entre guillemets. Pour des raisons de compatibilité, /X est identique à /E:ON, /Y est pareil que /E:OFF et /R est identique à /C. Toute autre option est ignorée.

Si /C ou /K est indiqué, alors le reste de la ligne de commande est traité avec la logique suivante pour prendre en compte les guillemets (") :

1. Si toutes les conditions suivantes sont respectées, alors les guillemets de la ligne de commande sont conservés :

  • pas d'option /S
  • exactement deux caractères guillemet
  • aucun caractère spécial entre les deux caractères guillemet, un caractère spécial étant : &<>()@^|
  • il y a un ou plusieurs espaces entre les deux caractères guillemet
  • la chaîne comprise entre les deux guillemets est le nom d'un fichier exécutable.

2. Dans le cas contraire, l'ancien comportement vérifiera si le premier caractère est un caractère guillemet et si tel est le cas, enlèvera le premier caractère et le dernier caractère guillemet de la ligne de commande, préservant tout texte se trouvant après le dernier caractère guillemet.

Si /D n'a PAS été spécifié dans la ligne de commande, alors CMD.EXE démarrera en recherchant les variables du Registre REG_SZ/REG_EXPAND_SZ suivantes et si l'une ou les deux sont présentes, elles seront exécutées en priorité.

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun et/ou 
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

Les extensions de commandes' sont activées par défaut. Il est possible de les désactiver pour une exécution particulière en utilisant l'option /E:OFF. Pour les activer ou désactiver pour toutes les exécutions de CMD.EXE sur une machine ou pour un utilisateur il faut fixer l'une ou les deux valeurs REG_DWORD suivantes du Registre :

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

et/ou

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

soit à 0x1 ou 0x0 (en utilisant REGEDT32.EXE). Les paramètres spécifiques de l'utilisateur sont prioritaires sur ceux de la machine. Les options de la ligne de commande ont préséance sur les paramètres du Registre.

Les extensions de commandes impliquent des modifications ou des additions dans les commandes suivantes :

DEL ou ERASE
COLOR
CD ou CHDIR
MD ou MKDIR
PROMPT
PUSHD
POPD
SET
SETLOCAL
ENDLOCAL
IF
FOR
CALL
SHIFT
GOTO
START (inclut également des modifications dans l'appel externe de commande)
ASSOC
FTYPE

Pour obtenir des détails spécifiques, tapez /? Nom_de_commande

L'expansion retardée de variables d'environnement Windows n'est PAS activée par défaut. Pour l'activer ou la désactiver pour une utilisation particulière de CMD.EXE utiliser l'option /F:ON ou /F:OFF. Pour l'activer ou la désactiver pour toute utilisation de CMD.EXE sur un ordinateur ou pour un utilisateur en fixant avec REGEDT32.EXE utiliser l'une ou les deux valeurs REG_DWORD suivantes du Registre :

HKEY_LOCAL_MACHINE\Software\Microsoft\Command
Processor\DelayedExpansion

et/ou

HKEY_CURRENT_USER\Software\Microsoft\Command 
Processor\DelayedExpansion

à la valeur 0x1 ou 0x0. Les paramètres spécifiques à l'utilisateur sont prioritaires sur les paramètres de l'ordinateur. Les options de la ligne de commande ont priorité sur les paramètres du Registre.

Si l'expansion retardée de variables d'environnement Windows est activée, un point d'exclamation peut être utilisé pour remplacer la valeur d'une variable d'environnement lors de l'exécution.

La terminaison des noms de fichiers et de répertoires n'est PAS activée par défaut. Pour l'activer ou la désactiver pour une instance particulière de CMD.EXE utiliser l'option /F:ON ou /F:OFF. Pour l'activer ou la désactiver pour toutes les instances de CMD.EXE sur un ordinateur ou pour un utilisateur en fixant avec REGEDT32.EXE utiliser l'une ou les deux valeurs REG_DWORD suivantes du Registre :

HKEY_LOCAL_MACHINE\Software\Microsoft\Command
Processor\CompletionChar
HKEY_LOCAL_MACHINE\Software\Microsoft\Command
Processor\PathCompletionChar

et/ou

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
HKEY_CURRENT_USER\Software\Microsoft\Command
Processor\PathCompletionChar

à la valeur hexadécimale d'un caractère de contrôle à utiliser pour une fonction particulière (par exemple : 0x4 représente Ctrl + D et 0x6, Ctrl + F. Les paramètres spécifiques de l'utilisateur sont prioritaires sur ceux de l'ordinateur. Les options de la ligne de commande ont préséance sur les paramètres du Registre.

Si la terminaison est activée avec l'option /F:ON, les deux caractères de contrôle utilisés sont Ctrl+D pour la terminaison des noms de répertoire et Ctrl + F pour la terminaison des noms de fichiers. Pour désactiver un caractère de terminaison particulier dans le Registre, utiliser la valeur pour l'espace (0x20) qui n'est pas valide en tant que caractère de contrôle.

La terminaison est appelée lorsque est entré l'un des deux caractères de contrôle. La fonction de terminaison prend le chemin figurant à gauche du curseur, y ajoute un caractère générique s'il n'y en a pas déjà et crée une liste des chemins correspondants. Cette fonction affiche ensuite le premier chemin de la liste. Si aucun chemin ne correspond, elle émet un son et n'affiche rien. Ensuite, si le même caractère de contrôle est pressé plusieurs fois, les chemins successifs correspondants de la liste précédente seront affichés. En pressant la touche Majuscule et le caractère de contrôle, la liste sera dans le sens contraire. Si la ligne est modifiée de quelque façon que ce soit et que le caractère de contrôle est pressé, la liste enregistrée de chemins correspondants est ignorée et une nouvelle liste est générée. De même, une nouvelle liste sera créée en passant de la terminaison des noms de fichiers à celle des noms de répertoires. La seule différence entre les deux caractères de contrôle est que la terminaison des noms de fichiers fonctionne pour les noms de fichiers et les noms de répertoires alors que la terminaison des noms de répertoires ne marche que pour les noms de répertoires. Si la terminaison des noms de fichiers est utilisée sur des commandes de répertoires internes (CD, MD ou RD) alors la terminaison des noms de répertoires est active.

Le code de terminaison traite correctement les noms de fichiers contenant des espaces ou d'autres caractères spéciaux, en plaçant des quotes autour des chemins correspondants. En rappelant le curseur et en appelant ensuite la terminaison, le texte à droite du curseur lorsque la terminaison est demandée est ignoré.

Liens utiles

Articles Vulgum Techus

Commentaires

blog comments powered by Disqus