Je sais que la color bf
commande définit les couleurs de toute la fenêtre de ligne de commande, mais je voulais imprimer une seule ligne dans une couleur différente.
217
Je sais que la color bf
commande définit les couleurs de toute la fenêtre de ligne de commande, mais je voulais imprimer une seule ligne dans une couleur différente.
Réponses:
Utilisez les séquences d'échappement ANSI.
Windows avant 10 - pas de prise en charge native des couleurs ANSI sur la console
Pour la version Windows inférieure à 10, la console de commande Windows ne prend pas en charge la coloration de sortie par défaut. Vous pouvez installer Cmder , ConEmu , ANSICON ou Mintty (utilisé par défaut dans GitBash et Cygwin) pour ajouter un support de coloration à votre console de commande Windows.
Windows 10 - Couleurs de ligne de commande
À partir de Windows 10, la console Windows prend en charge les séquences d'échappement ANSI et certaines couleurs par défaut. La fonctionnalité a été livrée avec la mise à jour Threshold 2 en novembre 2015.
Documentation MSDN
Mise à jour (05-2019): ColorTool vous permet de changer le jeu de couleurs de la console. Cela fait partie du projet Microsoft Terminal .
Démo
Commande par lots
Le a
win10colors.cmd
été écrit par Michele Locati :la source
.cmd
ou.bat
- les deux devraient fonctionner. Mais, je pense que je sais pourquoi cela ne fonctionne pas: il semble que le symbole d'échappement soit supprimé lors de la publication sur StackOverflow. Veuillez ne pas copier le contenu de ma réponse, utilisez plutôt le contenu d'ici: gist.githubusercontent.com/mlocati/…ESC
bloc-notes ++ auparavant ... Vous pouvez le faire avec des codes ALT en utilisant le pavé numérique et la touche ALT gauche:L-ALT
+0
+2
+7
ESC
personnage dans un fichier batch de cette façon:for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
Ceci est un auto-compilé hybride bat / .net (doit être enregistré sous
.BAT
) qui peut être utilisé sur n'importe quel système qui a installé le framework .net (il est rare de voir une fenêtre sans framework .NET même pour le plus ancien XP / 2003 installations). Il utilise le compilateur jscript.net pour créer un exe capable d'imprimer des chaînes avec différentes couleurs d'arrière-plan / de premier plan uniquement pour la ligne actuelle.Voici le message d'aide:
Exemple :
coloroutput.bat -s "aa\nbb\n\u0025cc" -b 10 -f 3 -n -e
Vous pouvez également trouver ce script ici .
Vous pouvez également vérifier la fonction de couleur de Carlos -> http://www.dostips.com/forum/viewtopic.php?f=3&t=4453
la source
Ce n'est pas une bonne réponse, mais si vous savez que le poste de travail cible a Powershell, vous pouvez faire quelque chose comme ça (en supposant que le script BAT / CMD):
Edit: (maintenant plus simple!)
C'est une vieille réponse mais j'ai pensé que je clarifierais et simplifierais un peu
PowerShell est désormais inclus dans toutes les versions de Windows depuis 7. Par conséquent, la syntaxe de cette réponse peut être raccourcie en une forme plus simple:
-fore
au lieu de-foregroundcolor
-back
au lieu de-backgroundcolor
echo
(plutôt que de créer un fichier de lot séparé comme ci - dessus).
Exemple:
Plus d'information:
La liste complète des couleurs et plus d'informations sont disponibles dans la
- PowerShell Documentation for
Write-Host
la source
Windows 10 - TH2 et supérieur:
(aka Version 1511, build 10586, version 2015-11-10)
À l'invite de commande:
Utilisation des touches réelles: écho Ctrl+ [
[32m HI
Ctrl+[[0m
EnterVous devriez voir un "HI" vert en dessous.
Les numéros de code peuvent être trouvés ici:
Bloc-notes:
Pour l'enregistrer dans le bloc-notes, vous pouvez taper ESC dedans en utilisant: Alt+
027
avec le pavé numérique, puis la[32m
partie. Une autre astuce lorsque j'étais sur un ordinateur portable, redirigez la ligne ci-dessus dans un fichier pour commencer, puis coupez et collez:la source
\033
mais non ... comment pourrais-je faire cela en Java?Vous pouvez simplement créer des fichiers avec le nom du mot à imprimer, utiliser findstr qui peut imprimer en couleur, puis effacer le fichier. Essayez cet exemple:
Exécutez
color /?
pour obtenir une liste de couleurs.la source
Vous pouvez utiliser ANSICON pour activer les codes de terminal ANSI dans les anciennes versions de Windows. Il existe des versions 32 et 64 bits que j'ai utilisées dans Windows XP et Windows 7.
la source
J'étais ennuyé par le manque de coloration appropriée dans cmd aussi, alors j'ai continué et j'ai créé cmdcolor . C'est juste un proxy standard, qui recherche un ensemble limité de séquences de contrôle ANSI / VT100 (en d'autres termes, comme dans bash), c'est-à-dire
echo \033[31m RED \033[0m DEFAULT | cmdcolor.exe
.Utilisation et téléchargements .
la source
cmdcolor.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit
upx
. Pourriez-vous me contacter par e-mail, s'il vous plaît?J'ai regardé cela parce que je voulais introduire des couleurs de texte simples dans un fichier batch Win7. C'est ce que j'ai trouvé. Merci de votre aide.
la source
Il y a déjà une réponse acceptée avec plus de 250 votes positifs. La raison pour laquelle je continue de contribuer est que le
escape
caractère requis pour l'écho n'est pas accepté par de nombreux éditeurs (j'utilise, par exemple, MS Code) et toutes les autres solutions nécessitent des logiciels tiers (non par défaut de Windows).La solution de contournement avec l'utilisation de commandes batch simples utilise
PROMPT
plutôt queECHO
. LaPROMPT
commande accepte leescape
caractère d'une manière compatible avec n'importe quel éditeur en tant que$E
séquence de caractères. (Remplacez simplement leEsc
dans les codes d'échappement ASCII ) par$E
.Voici un code de démonstration:
Remarque: le seul inconvénient est que cette technique entre en collision avec les paramètres de couleur cmd utilisateur (
color
commande ou paramètres) si elle n'est pas connue explicitement.- J'espère que cela aide car c'est la seule solution acceptable pour moi pour les raisons mentionnées au début. -
ÉDITER:
Sur la base des commentaires, je joins un autre extrait inspiré de @Jeb. Il:
ECHO
commandes "natives"PROMPT
valeur localeECHO
sortie affecte inévitablement laPROMPT
couleur, de sorte que la couleur doit être réinitialisée de toute façonla source
for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "\e=%%E"
echo
utilisé dans batcolors / echo.bat "?set ASCII27=←
parfor /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "ASCII27=%%E"
. Cela utilise le caractère d'échappement créé par la commande d'invite, sans modifier définitivement l'invite (car laprompt
commande est exécutée dans un processus enfant). Btw. Vous avezechos.bat
un certain potentiel d'optimisation ...J'ajoute une réponse pour résoudre un problème noté dans certains commentaires ci-dessus: les codes de couleur ansi en ligne peuvent mal se comporter lorsqu'ils sont à l'intérieur d'une boucle FOR (en fait, dans n'importe quel bloc de code entre parenthèses). Le code .bat ci-dessous illustre (1) l'utilisation de codes de couleur en ligne, (2) l'échec de la couleur qui peut se produire lorsque des codes de couleur en ligne sont utilisés dans une boucle FOR ou dans un bloc de code entre parenthèses, et (3) une solution pour le problème. Lorsque le code .bat s'exécute, les tests 2 et 3 montrent l'échec du code couleur et le test 4 ne montre aucune défaillance car il implémente la solution.
[EDIT 2020-04-07: J'ai trouvé une autre solution qui est probablement plus efficace que d'appeler un sous-programme. Mettez la phrase FINDSTR entre parenthèses, comme dans la ligne suivante:
ENDEDIT]
Remarque: D'après mon expérience (limitée), le problème du code couleur ne se manifeste qu'après que l'entrée a été canalisée vers FINDSTR à l'intérieur du bloc de code. C'est ainsi que le .bat suivant reproduit le problème. Il est possible que le problème du code couleur soit plus général qu'après le raccordement à FINDSTR. Si quelqu'un peut expliquer la nature du problème et s'il existe une meilleure façon de le résoudre, je l'apprécierais.
la source
vous pouvez utiliser cecho .. vous pouvez également l'utiliser pour l'intégrer directement dans votre script afin que vous n'ayez pas à emporter un .com ou un .exe
http://www.codeproject.com/Articles/17033/Add-Colors-to-Batch-Files
la source
Je viens de passer de Win 7 Home à Win 10 Pro et je voulais remplacer le lot que j'appelle d'autres lots pour faire écho aux informations en couleur. En examinant ce qui est discuté ci-dessus, j'utilise ce qui suit qui remplacera directement mon lot précédent. REMARQUE l'ajout de "~" au message afin que les messages avec des espaces puissent être utilisés. Au lieu de me souvenir des codes, j'utilise des lettres pour les couleurs dont j'avais besoin.
Si% 2 contient des espaces, il faut "..."% 1 Couleurs fortes sur le noir: R = rouge G = VERT Y = JAUNE W = BLANC
la source
Vous devrez faire écho à une séquence de code d'échappement ANSI pour modifier la couleur du texte: http://en.wikipedia.org/wiki/ANSI_escape_code
Une autre très bonne source de ces codes d'échappement est http://ascii-table.com/ansi-escape-sequences.php
la source
Mettez les lignes suivantes dans un fichier appelé
ColourText.bas
sur votre bureau.Enregistrez-le et tapez ce qui suit dans une invite de commandes.
Un fichier appelé ColourText.exe apparaîtra sur votre bureau. Déplacez-le dans le dossier Windows .
Pour l'utiliser, vous devez utiliser deux codes de caractères pour définir la couleur, par exemple
01
pas1
.EG Pour mettre du bleu sur blanc en ne passant aucun texte, puis du rouge sur du texte blanc, en terminant par du bleu sur gris.
ou
La
CLS
commande devient également intéressante.Color
La commande sans paramètres réinitialise toutes les couleurs aux couleurs de démarrage.Pour obtenir le code couleur, additionnez les nombres suivants. Utilisez la calculatrice en mode programmeurs. Ce sont des nombres hexadécimaux. Ils peuvent être ajoutés ensemble, par exemple rouge + bleu + intensité FG = 13 = D. Comme 10+ n'a pas été utilisé, l'arrière-plan sera noir. Les codes de couleur DOIVENT être composés de deux caractères, par exemple
08
non8
.la source
Pour obtenir ce travail sur Windows 10, vous pouvez activer cette option:
ENABLE_VIRTUAL_TERMINAL_PROCESSING
.Avec cette clé de registre, vous pouvez définir cela par défaut
[HKCU\Console] VirtualTerminalLevel dword 0x1
la source
Une alternative consiste à utiliser NodeJS .
Voici un exemple:
Et voici le résultat:
la source
Comme Glenn Slayden l'a dit dans cette réponse , vous pouvez ajouter au registre la valeur appropriée pour rendre le cmd "plus coloré".
la source
Définir la couleur des instructions de journal dans PowerShell n'est pas un gros problème. vous pouvez utiliser le
-ForegroundColor
paramètre.Pour écrire un message de confirmation.
Pour écrire un message d'erreur.
Pour écrire un message de progression .
la source
la source
%ESC%
est vide, donc cela ne fonctionnera pas.echo !white!
définit la couleur sur blanc. Pour revenir aux couleurs par défaut (quels que soient les paramètres utilisateurs pour cela): lacolor
commande sans paramètres le fait.Nous le faisions avec les codes de terminal ANSI . Je ne sais pas s'ils fonctionnent toujours, mais vous pouvez les essayer.
la source
Vous pouvez utiliser la commande color pour changer la couleur de la console entière
Est en noir et blanc
Est noir et vert
la source