Batch MS-DOS - WindowsLinux.net

publicité
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
Téléchargement