interpréteur de commandes Windows

De Vulgum Techus
Version du 19 mars 2014 à 17:41 par Admin2 (discuter | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : Navigation, rechercher

La commande CMD ou cmd démarre une nouvelle instance de l'interpréteur de commandes de Windows 2000, XP, Vista, 7, 8 et 8.1

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 quotes. 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 quotes (") :

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

  • pas d'option /S
  • exactement deux caractères quote
  • aucun caractère spécial entre les deux caractères quote, un caractère spécial étant : &<>()@^|
  • il y a un ou plusieurs espaces entre les deux caractères quote
  • la chaîne comprise entre les deux quotes 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 quote et si tel est le cas, enlèvera le premier caractère et le dernier caractère quote de la ligne de commande, préservant tout texte se trouvant après le dernier caractère quote.

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é.