Batch MS-DOS

Version imprimableEnvoyer par emailversion PDF

Commandes et exemples

Commentaires

La commande rem permet de mettre en commentaire une ligne.

Cependant, préférez l'utilisation de deux doubles points ("::"), car la commande ("rem") initialise la variable %errorlevel% à 0.


rem Cette ligne est un commentaire
echo Préférez un commentaire avec un "::"
:: Cette ligne est aussi un commentaire


Répertoire courant

La commande start vous permet d'exécuter un script dans un répertoire spécifique.


C:\Users\MonUtilisateur>start /D "%programfiles%"
:: Une nouvelle fenêtre s'ouvre ...
C:\Program Files>


Exemples divers

Sous Windows XP/2000/2003 on peut partager un dossier, et le supprimer sans supprimer sans que le partage soit supprimé du système.

Il peut alors persister une longue liste de partages... mais sans les dossiers s'y rapportant. Cependant un "net use /delete" permet de supprimer ces partages fantômes, à condition de connaitre leur nom.

Voici comment les obtenirs, et inscrivant tous les partages Windows existants (fantômes et réels) dans un fichier "partages.txt".

Exécuter la commande suivante :

 


for /F "usebackq tokens=1 delims= " %i IN ('net share') DO echo %i >> partages.txt


Redirections

commande > fichier.log : Redirige le résultat de la commande dans un fichier.

commande >> fichier.log : Ajouter le résultat de la commande dans un fichier.

commande < fichier.log : Passe le texte du fichier à la commande.

commandeA  |  commandeB : Passe la sortie de la commande de la "CommandeA" à la "CommandeB".

commandeA &  commandeB : Exécuter la commandeA puis la commandeB.

commandeA && commandeB : Exécuter la commandeA, si elle réussit exécuter la commandeB.

commandeA || commandeB : Exécuter la commandeA, si elle échoue exécuter la commandeB.

Exemple :


DIR C:\ >Liste_de_C.txt & DIR D:\ >Liste_de_D.txt
ECHO y| DEL *.txt


Consoles disponibles

STDIN = 0 : Entrée du clavier

STDOUT = 1 : Affichage de la sortie texte (résultat / messages "corrects", sans les erreur).

STDERR = 2 : Affichage de la sortie des erreurs.

NON DEFINIS = 3-9

commande 2> fichier.log : Redirige tout message d'erreur dans un fichier

commande 2>> fichier.log : Ajoute tout message d'erreur dans un fichier

(commande)2> fichier.log : Rediriger toute erreur du processus CMD.exe dans un fichier.

commande > fichier.log 2>&1 : Rediriger les erreurs et les sorties dans un fichier.

commande > fichier.log 2<&1 : Rediriger les sorties et les erreurs dans un fichier.

commande > fichierA.log 2> fichierB.log : Redirige les sorties et les fichiers dans des fichiers séparés.

commande 2>&1 >fichier.log : Ceci ne fonctionnera pas !

Cacher les erreurs

commande 2> nul : Redirige tous les messages d'erreurs vers NUL.

commande >nul 2>&1 : Redirige les erreurs et les sorties vers NUL.

commande >fichier.log 2> nul : Rediriger les messages vers un fichier mais supprime les erreurs.

(commande)>fichier.log 2> nul : Rediriger les sorties dans un fichier, et supprime les erreurs du processus CMD.exe.

Exemples :


DIR C:\ >Liste_de_C.txt 2>errorlog.log
Date /T >>DateDuJour.txt
FIND /i "Toto" < fichier.txt >resultats.log


Précisions

Tout nom de fichier long doit être "entouré de guillemets".

Une erreur de ligne de commande (%errorlevel%) est attaché au processus CMD.exe, et non au programme / commande exécutée.

Une redirection avec > ou 2> va ecraser le fichier de sortie.

Il est aussi possible de rediriger le résultat vers une imprimante avec "> PRN" ou ">LPT1".

Pour éviter que les caractères ">" et "<" provoquent une redirection, utilisez le caractère d'échapement avec un accent circonflexe : "^>" ou "^<".

Exemples :
En ligne 1, il est possible de rediriger plusieures lignes en mettant entre parenthèse une suite de commandes.


( echo Texte d'exemple n°1 echo Texte d'exemple n°2 ) > c:\fichier.log
ECHO Ligne de texte ^<html tag^> suite du texte


Unicode

La ligne de commande "CMD.exe" peut traiter du texte ASCII/ANSI (par défaut) ou Unicode (UCS-2 le) mais pas UTF-8.

Cette sélection s'effectue par l'exécution de "CMD /A" ou "CMD /U".

Avec les paramètres par défaut (quand on lance cmd.exe sans options), un fichier encodé en UCS-2 peut être convertis en redirigeant sa sortie (note : c'est la redirection du processus cmd.exe qui effectue le changement d'encodage, pas la commande TYPE/MORE) :


TYPE FichierUNICODE.txt > fichierASCII.txt


Les caractères européens comme àéèÿ peuvent être convertis correctement, mais d'autres tels que £¥ƒ€ deviennent des caractères ASCII au hasard tel que œ¾Ÿ?.

Pipes et CMD.exe

Lorsqu'une commande est exécutée avec "| autre_commande", ceci démarre (ou effectue un CALL) un nouveau processus CMD.exe. Dans les faits ceci exécute :


C:\Windows\System32\cmd.exe /C /S /D "autre_commande" 


Ceci provoque quelques effets secondaires :

Tout caractère de nouvelle ligne (CR/LF) dans "autre_commande" sera interprété comme un opérateur "&" (voir ce lien).

 

Si l'"autre_commande" inclus un caractère d'échapement "^", il faut le doubler afin qu'il soit passé au nouveau processus CMD.

Lancer un nouveau processus CMD.exe à aussi un léger effet sur la performance, qui ne sera pas détectable pour de petites quantités de données.

 

 

Liens

Internes

Utilitaires pour la ligne de commande Windows

Invite de commande pour Windows

Outils Windows

Externes

 

Sponsors