Cmd.exe

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Wikipedia-logo-v2.svg

Wikipédia propose un article sur : « Cmd.exe ».

Commandes DOS

cmd.exe est l'interpréteur de commande en mode texte de Windows NT et OS/2. Son ancêtre, sous MS-DOS (et présent dans Windows 9x) était COMMAND.COM. Il est l'équivalent du shell sous Unix ou cygwin. Il peut interpréter des fichiers batch qui sont des fichiers textes contenant une série de commandes (Voir w:interpréteur de commandes).

Exécution de l'interpréteur de commandes[modifier | modifier le wikicode]

Il faut aller dans le Menu Démarrer > Exécuter, puis tapez cmd.

Sous Windows Vista et Windows 7, il suffit de taper la commande cmd dans la barre de recherches de Windows Desktop Search.

Commandes internes[modifier | modifier le wikicode]

Aide[modifier | modifier le wikicode]

Il est possible d'obtenir de l'aide sur toutes les commandes en tapant leur nom suivi de /? :

C:\>echo /?
Affiche des messages ou active/désactive l'affichage des commandes.

 ECHO [ON | OFF]
 ECHO [message]

ECHO sans paramètres affiche l'état en cours de la commande.

ECHO[modifier | modifier le wikicode]

Affiche une chaîne sur la sortie. Permet également d'autoriser ou d'interdire l'affichage des commandes sur la sortie standard par les commandes ECHO ON et ECHO OFF

Le comportement par défaut de cmd.exe est d'afficher chaque commande sur la sortie standard avant de l'exécuter. C'est souvent non désiré, la commande ECHO OFF est souvent donnée au début d'un fichier batch. Cmd.exe interprète également le @, préfixé à la commande, pour empêcher une seule commande de s'afficher. De ce fait, beaucoup de fichiers batch commencent par la ligne @ECHO OFF.

:: ou REM[modifier | modifier le wikicode]

Commentaire.

SET[modifier | modifier le wikicode]

SET permet de modifier des variables d'environnement.

Cette commande sous windows est l'équivalent de "set" et "export" sur les shell d'Unix (notamment bash).

FOR[modifier | modifier le wikicode]

Sorte de for. On peut grouper plusieurs commandes à l'aide de parenthèses. Par exemple :

for %x in (*.c) do (
  echo copie de %x
  copy %x c:\sos\
)

Cette commande a de nombreuses options la rendant beaucoup plus puissante que sa version MS-DOS.

SHIFT[modifier | modifier le wikicode]

Décale les arguments. Équivalent du shift de bash.

GOTO[modifier | modifier le wikicode]

Dirige cmd.exe sur une ligne étiquetée dans le programme de commandes. Les étiquettes sont sur une ligne précédée du caractère ":". Hérité des premières versions de COMMAND.COM qui ne permettaient pas beaucoup de structuration.

IF[modifier | modifier le wikicode]

Le if connu de tous les programmeurs.

ERRORLEVEL[modifier | modifier le wikicode]

Utilisé avec IF, teste si la valeur de retour d'un programme atteint ou dépasse une erreur donnée. Equivalent du $? de bash. Par exemple:

IF ERRORLEVEL 6 GOTO label

Continuera l'exécution à l'étiquette label si le dernier programme exécuté a retourné une valeur supérieure ou égale à 6.

CALL[modifier | modifier le wikicode]

Appelle un autre programme batch. En effet l'appel simple à un fichier batch provoquera l'enchaînement du fichier sans retour possible vers le fichier appelant.

Permet également d'appeler une fonction (matérialisée par un label (:) et un retour au programme principal par GOTO :EOF)

Exemple d'appel de fonction avec un argument :

@ECHO OFF

ECHO « Avant fonction1 » 
CALL :fonction1 arg1
ECHO « Apres fonction1 » 
REM Sortie du programme
GOTO :EOF

:fonction1
ECHO « Fonction1 avec argument: %1 » 
REM Sortie de la fonction
GOTO :EOF

START[modifier | modifier le wikicode]

Démarre une nouvelle fenêtre pour ouvrir le fichier (avec le programme déterminé par l'extension du fichier) exécuter le programme ou la commande donné. Par exemple

start chrome

permet de démarrer la commande « netscape » dans une nouvelle fenêtre sans attendre la fin de son exécution. Il existe de nombreuses options.

Exemple[modifier | modifier le wikicode]

:: Start Vim on a copy of the tutor file.
@echo off  
:: Usage: vimtutor [-console] [xx]
::
:: -console means gvim will not be used
:: xx is a language code like « es » or "nl".
:: When an xx argument is given, it tries loading that tutor.
:: When this fails or no xx argument was given, it tries using 'v:lang'
:: When that also fails, it uses the English version. 
:: Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
FOR %%d in (. %TMP% %TEMP%) DO IF EXIST %%d\nul SET TUTORCOPY=%%d\$tutor$ 
SET xx=%1
IF NOT .%1==.-console GOTO use_gui
SHIFT
SET xx=%1
GOTO use_vim
:use_gui  
:: Try making a copy of tutor with gvim. If gvim cannot be found, try using
:: vim instead. If vim cannot be found, alert user to check environment and
:: installation. 
:: The script tutor.vim tells Vim which file to copy.
:: For Windows NT « start » works a bit differently.
IF .%OS%==.Windows_NT GOTO ntaction 
start /w gvim -u NONE -c « so $VIMRUNTIME/tutor/tutor.vim » 
IF ERRORLEVEL 1 GOTO use_vim
:: Start gvim without any .vimrc, set 'nocompatible'
start /w gvim -u NONE -c « set nocp » %TUTORCOPY%

Liens externes[modifier | modifier le wikicode]