Publié sur WindowsLinux.net (http://www.windowslinux.net) Accueil > Batch MS-DOS Batch MS-DOS [1] 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 >> partage 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 [2]). 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 [3] Invite de commande pour Windows [4] Outils Windows [5] Externes http://www.hotline-pc.org/batch.htm [6] http://stackoverflow.com/questions/245395/hidden-features-of-windows-bat... [7] Utilitaires graphiques pour vos scripts : http://www.horstmuc.de/w32dial.htm [8] Exécuter une ligne de commande "Administrateur" (Vista/7/8) : http://code.kliu.org/cmdopen/ [9] NirCMD : http://www.nirsoft.net/utils/nircmd.html [10] Utilitaires pour Active Directory : http://www.joeware.net/freetools/ [11] Exemples : http://www.batcher.fr/ [12] Active Directory, Imprimantes locales, Citrix : http://www.ctxadmtools.com/CtxAdmTools.aspx [13] Tags: Scripts [14] batch [15] cmd [16] dos [17] Visitez notre site web : WindowsLinux.net - Wiki et partage d'informations sur Windows et Linux. URL source (Obtenu le 17/04/2017 - 01:05): http://www.windowslinux.net/batch-ms-dos Liens: [1] http://www.windowslinux.net/batch-ms-dos [2] http://stackoverflow.com/questions/8192318/why-does-delayed-expansion-fail-when-inside-a-pipedblock-of-code#8194279 [3] http://www.windowslinux.net/search/node/Utilitaires%2Bpour%2Bla%2Bligne%2Bde%2Bcommande%2BWindows [4] http://www.windowslinux.net/search/node/Invite%2Bde%2Bcommande%2Bpour%2BWindows [5] http://www.windowslinux.net/search/node/Outils%2BWindows [6] http://www.hotline-pc.org/batch.htm [7] http://stackoverflow.com/questions/245395/hidden-features-of-windows-batch-files [8] http://www.horstmuc.de/w32dial.htm [9] http://code.kliu.org/cmdopen/ [10] http://www.nirsoft.net/utils/nircmd.html [11] http://www.joeware.net/freetools/ [12] http://www.batcher.fr/ [13] http://www.ctxadmtools.com/CtxAdmTools.aspx [14] http://www.windowslinux.net/tags/scripts [15] http://www.windowslinux.net/tags/batch [16] http://www.windowslinux.net/tags/cmd [17] http://www.windowslinux.net/tags/dos