77 votes

Comment avoir plusieurs couleurs dans un fichier batch Windows ?

Je me demandais s'il est possible d'avoir un texte de couleur différente sur la même ligne dans un fichier batch Windows, par exemple s'il est écrit

echo hi world

Je veux que "hi" soit d'une couleur, et "world" d'une autre couleur. Je pourrais peut-être définir la commande COLOR comme une variable :

set color1= color 2
set color9= color A

et ensuite les déployer sur la même ligne avec

echo hi world

mais je ne sais pas comment je ferais ça.

76voto

jeb Points 26035

Vous pouvez faire des sorties multicolores sans aucun programme externe.

@echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)
echo say the name of the colors, don't read

call :ColorText 0a "blue"
call :ColorText 0C "green"
call :ColorText 0b "red"
echo(
call :ColorText 19 "yellow"
call :ColorText 2F "black"
call :ColorText 4e "white"

goto :eof

:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

Il utilise la fonction de couleur de la commande findstr.

Findstr peut être configuré pour sortir les numéros de ligne ou les noms de fichier dans une couleur définie.
Donc, je crée d'abord un fichier avec le texte comme nom de fichier, et le contenu est un single <backspace> (ASCII 8).
Ensuite, je recherche toutes les lignes non vides dans le fichier et dans nul, de sorte que le nom du fichier sera affiché dans la couleur correcte, accompagné de deux points, mais les deux points sont immédiatement supprimés par la fonction <backspace> .

EDIT : Un an plus tard ... tous les caractères sont valables.

@echo off
setlocal EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)

rem Prepare a file "X" with only one dot
<nul > X set /p ".=."

call :color 1a "a"
call :color 1b "b"
call :color 1c "^!<>&| %%%%"*?"
exit /b

:color
set "param=^%~2" !
set "param=!param:"=\"!"
findstr /p /A:%1 "." "!param!\..\X" nul
<nul set /p ".=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%"
exit /b

Ceci utilise la règle pour les noms de chemin/filtres valides.
Si un \..\ est dans le chemin, l'élément préfixé sera complètement supprimé et il n'est pas nécessaire que cet élément ne contienne que des caractères de nom de fichier valides.

1 votes

Ok, cela a bien fonctionné mais y a-t-il un moyen de réduire la quantité de saisie à une seule ligne de code pour faire cela ? est-il possible pour moi de définir cela comme une variable globale appelée "defcolor" et d'être en mesure de l'utiliser chaque fois que j'ouvre l'invite de commande ? (en l'important ou en l'ayant comme variable système ?)

1 votes

Et pourriez-vous me montrer un modèle que je pourrais utiliser pour cela ? comme le modèle pour la commande "findstr" est quelque chose comme "FINDSTR /A /File [nom de fichier] /Path [chemin]" quelque chose de générique que je peux utiliser comme un guide pour une utilisation future.

0 votes

C'est une solution créative et intéressante, mais malheureusement elle est limitée à l'affichage des caractères de texte qui sont valides dans un nom de fichier, ce qui peut être un obstacle si, par exemple, vous n'avez pas le contrôle sur le texte que vous voulez afficher (comme vous sortez les erreurs d'un fichier journal de construction en rouge). Ce serait formidable s'il existait un moyen de contourner cette limitation...

45voto

dbenham Points 46458

La réponse éditée de Jeb est proche de la résolution de tous les problèmes. Mais elle a des problèmes avec les chaînes de caractères suivantes :

"a\b\"
"a/b/"
"\"
"/"
"."
".."
"c:"

J'ai modifié sa technique pour en faire quelque chose qui, je pense, peut vraiment gérer n'importe quelle chaîne de caractères imprimables, à l'exception des limitations de longueur.

Autres améliorations :

  • Utilise l'emplacement %TEMP% pour le fichier temporaire, donc plus besoin d'accès en écriture au répertoire courant.

  • Créé 2 variantes, l'une prend une chaîne littérale, l'autre le nom d'une variable contenant la chaîne. La version variable est généralement moins pratique, mais elle élimine certains problèmes d'échappement de caractères spéciaux.

  • Ajout de l'option /n comme 3ème paramètre optionnel pour ajouter une nouvelle ligne à la fin de la sortie.

Le retour arrière ne fonctionne pas sur un saut de ligne, ce qui peut poser des problèmes si la ligne s'enroule. Par exemple, l'impression d'une chaîne dont la longueur est comprise entre 74 et 79 ne fonctionnera pas correctement si la console a une largeur de ligne de 80.

@echo off
setlocal

call :initColorPrint

call :colorPrint 0a "a"
call :colorPrint 0b "b"
set "txt=^" & call :colorPrintVar 0c txt
call :colorPrint 0d "<"
call :colorPrint 0e ">"
call :colorPrint 0f "&"
call :colorPrint 1a "|"
call :colorPrint 1b " "
call :colorPrint 1c "%%%%"
call :colorPrint 1d ^"""
call :colorPrint 1e "*"
call :colorPrint 1f "?"
call :colorPrint 2a "!"
call :colorPrint 2b "."
call :colorPrint 2c ".."
call :colorPrint 2d "/"
call :colorPrint 2e "\"
call :colorPrint 2f "q:" /n
echo(
set complex="c:\hello world!/.\..\\a//^<%%>&|!" /^^^<%%^>^&^|!\
call :colorPrintVar 74 complex /n

call :cleanupColorPrint

exit /b

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:colorPrint Color  Str  [/n]
setlocal
set "str=%~2"
call :colorPrintVar %1 str %3
exit /b

:colorPrintVar  Color  StrVar  [/n]
if not defined %~2 exit /b
setlocal enableDelayedExpansion
set "str=a%DEL%!%~2:\=a%DEL%\..\%DEL%%DEL%%DEL%!"
set "str=!str:/=a%DEL%/..\%DEL%%DEL%%DEL%!"
set "str=!str:"=\"!"
pushd "%temp%"
findstr /p /A:%1 "." "!str!\..\x" nul
if /i "%~3"=="/n" echo(
exit /b

:initColorPrint
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do set "DEL=%%a"
<nul >"%temp%\x" set /p "=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%.%DEL%"
exit /b

:cleanupColorPrint
del "%temp%\x"
exit /b

MISE À JOUR 2012-11-27

Cette méthode échoue sous XP parce que FINDSTR affiche le retour arrière comme un point à l'écran. La réponse originale de jeb fonctionne sous XP, mais avec les limitations déjà signalées

MISE À JOUR 2012-12-14

Il y a eu beaucoup d'activités de développement à DosTips y SS64 . Il s'avère que FINDSTR corrompt également les noms de fichiers contenant de l'ASCII étendu s'ils sont fournis sur la ligne de commande. J'ai mis à jour mon QUESTIONS ET RÉPONSES SUR LE FINDSTR .

Vous trouverez ci-dessous une version qui fonctionne sous XP et qui prend en charge TOUS les caractères à un octet, à l'exception de 0x00 (nul), 0x0A (saut de ligne) et 0x0D (retour chariot). Cependant, lorsqu'elle fonctionne sous XP, la plupart des caractères de contrôle s'affichent sous forme de points. Il s'agit d'une caractéristique inhérente à FINDSTR sous XP qui ne peut être évitée.

Malheureusement, l'ajout du support pour XP et pour les caractères ASCII étendus ralentit la routine :-(

Juste pour s'amuser, j'ai pris un peu d'art ASCII en couleur sur le site de Galerie d'art ASCII de joan stark et je l'ai adapté pour l'utiliser avec ColorPrint. J'ai ajouté un point d'entrée :c par souci de concision, et pour gérer un problème avec les littéraux entre guillemets.

@echo off
setlocal disableDelayedExpansion
set q=^"
echo(
echo(
call :c 0E "                ,      .-;" /n
call :c 0E "             ,  |\    / /  __," /n
call :c 0E "             |\ '.`-.|  |.'.-'" /n
call :c 0E "              \`'-:  `; : /" /n
call :c 0E "               `-._'.  \'|" /n
call :c 0E "              ,_.-=` ` `  ~,_" /n
call :c 0E "               '--,.    "&call :c 0c ".-. "&call :c 0E ",=!q!." /n
call :c 0E "                 /     "&call :c 0c "{ "&call :c 0A "* "&call :c 0c ")"&call :c 0E "`"&call :c 06 ";-."&call :c 0E "}" /n
call :c 0E "                 |      "&call :c 0c "'-' "&call :c 06 "/__ |" /n
call :c 0E "                 /          "&call :c 06 "\_,\|" /n
call :c 0E "                 |          (" /n
call :c 0E "             "&call :c 0c "__ "&call :c 0E "/ '          \" /n
call :c 02 "     /\_    "&call :c 0c "/,'`"&call :c 0E "|     '   "&call :c 0c ".-~!q!~~-." /n
call :c 02 "     |`.\_ "&call :c 0c "|   "&call :c 0E "/  ' ,    "&call :c 0c "/        \" /n
call :c 02 "   _/  `, \"&call :c 0c "|  "&call :c 0E "; ,     . "&call :c 0c "|  ,  '  . |" /n
call :c 02 "   \   `,  "&call :c 0c "|  "&call :c 0E "|  ,  ,   "&call :c 0c "|  :  ;  : |" /n
call :c 02 "   _\  `,  "&call :c 0c "\  "&call :c 0E "|.     ,  "&call :c 0c "|  |  |  | |" /n
call :c 02 "   \`  `.   "&call :c 0c "\ "&call :c 0E "|   '     "&call :c 0A "|"&call :c 0c "\_|-'|_,'\|" /n
call :c 02 "   _\   `,   "&call :c 0A "`"&call :c 0E "\  '  . ' "&call :c 0A "| |  | |  |           "&call :c 02 "__" /n
call :c 02 "   \     `,   "&call :c 0E "| ,  '    "&call :c 0A "|_/'-|_\_/     "&call :c 02 "__ ,-;` /" /n
call :c 02 "    \    `,    "&call :c 0E "\ .  , ' .| | | | |   "&call :c 02 "_/' ` _=`|" /n
call :c 02 "     `\    `,   "&call :c 0E "\     ,  | | | | |"&call :c 02 "_/'   .=!q!  /" /n
call :c 02 "     \`     `,   "&call :c 0E "`\      \/|,| ;"&call :c 02 "/'   .=!q!    |" /n
call :c 02 "      \      `,    "&call :c 0E "`\' ,  | ; "&call :c 02 "/'    =!q!    _/" /n
call :c 02 "       `\     `,  "&call :c 05 ".-!q!!q!-. "&call :c 0E "': "&call :c 02 "/'    =!q!     /" /n
call :c 02 "    jgs _`\    ;"&call :c 05 "_{  '   ; "&call :c 02 "/'    =!q!      /" /n
call :c 02 "       _\`-/__"&call :c 05 ".~  `."&call :c 07 "8"&call :c 05 ".'.!q!`~-. "&call :c 02 "=!q!     _,/" /n
call :c 02 "    __\      "&call :c 05 "{   '-."&call :c 07 "|"&call :c 05 ".'.--~'`}"&call :c 02 "    _/" /n
call :c 02 "    \    .=!q!` "&call :c 05 "}.-~!q!'"&call :c 0D "u"&call :c 05 "'-. '-..'  "&call :c 02 "__/" /n
call :c 02 "   _/  .!q!    "&call :c 05 "{  -'.~('-._,.'"&call :c 02 "\_,/" /n
call :c 02 "  /  .!q!    _/'"&call :c 05 "`--; ;  `.  ;" /n
call :c 02 "   .=!q!  _/'      "&call :c 05 "`-..__,-'" /n
call :c 02 "    __/'" /n
echo(

exit /b

:c
setlocal enableDelayedExpansion
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:colorPrint Color  Str  [/n]
setlocal
set "s=%~2"
call :colorPrintVar %1 s %3
exit /b

:colorPrintVar  Color  StrVar  [/n]
if not defined DEL call :initColorPrint
setlocal enableDelayedExpansion
pushd .
':
cd \
set "s=!%~2!"
:: The single blank line within the following IN() clause is critical - DO NOT REMOVE
for %%n in (^"^

^") do (
  set "s=!s:\=%%~n\%%~n!"
  set "s=!s:/=%%~n/%%~n!"
  set "s=!s::=%%~n:%%~n!"
)
for /f delims^=^ eol^= %%s in ("!s!") do (
  if "!" equ "" setlocal disableDelayedExpansion
  if %%s==\ (
    findstr /a:%~1 "." "\'" nul
    <nul set /p "=%DEL%%DEL%%DEL%"
  ) else if %%s==/ (
    findstr /a:%~1 "." "/.\'" nul
    <nul set /p "=%DEL%%DEL%%DEL%%DEL%%DEL%"
  ) else (
    >colorPrint.txt (echo %%s\..\')
    findstr /a:%~1 /f:colorPrint.txt "."
    <nul set /p "=%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%%DEL%"
  )
)
if /i "%~3"=="/n" echo(
popd
exit /b

:initColorPrint
for /f %%A in ('"prompt $H&for %%B in (1) do rem"') do set "DEL=%%A %%A"
<nul >"%temp%\'" set /p "=."
subst ': "%temp%" >nul
exit /b

:cleanupColorPrint
2>nul del "%temp%\'"
2>nul del "%temp%\colorPrint.txt"
>nul subst ': /d
exit /b

0 votes

Y a-t-il un moyen de faire en sorte que ce script gère ces caractères utilisés pour faire des menus de type dos ? fr.wikipedia.org/wiki/Box-drawing_character

0 votes

@Elieder - Avez-vous essayé ? Cela devrait fonctionner, mais vous devez obtenir les codes ASCII étendus appropriés dans une variable, et votre page de code active doit être définie de manière appropriée. Posez une nouvelle question si vous n'arrivez pas à le faire fonctionner.

0 votes

Je rencontre un problème où je veux que '## %76 space% ##' soit affiché, mais il s'affiche comme '##'. \. ##' Je ne sais pas pourquoi, voici mon code : 'call :c 0e "##"&call :c f9 "%76 Spaces%"&call :c 0a "##"'

27voto

JFL Points 106

En fait, cela peut être fait sans créer de fichier temporaire. La méthode décrite par jeb et dbenham fonctionnera même avec un fichier cible qui ne contient pas de backspaces. Le point critique est que la ligne reconnue par findstr.exe ne doit pas se terminer par un CRLF. Ainsi, le fichier texte évident à scanner avec une ligne ne se terminant pas par un CRLF est le batch invoquant lui-même, à condition que nous le terminions par une telle ligne ! Voici un exemple mis à jour de script fonctionnant de cette façon...

Changements par rapport à l'exemple précédent :

  • Utilise un tiret unique sur la dernière ligne comme chaîne de caractères à rechercher. (Elle doit être courte et n'apparaître nulle part ailleurs comme cela dans le lot).
  • Renommé les routines et les variables pour être un peu plus orienté objet :-)
  • Suppression d'un niveau d'appel, pour améliorer légèrement les performances.
  • Ajout de commentaires (commençant par :# pour ressembler davantage à la plupart des autres langages de script).

@echo off
setlocal

call :Echo.Color.Init

goto main

:Echo.Color %1=Color %2=Str [%3=/n]
setlocal enableDelayedExpansion
set "str=%~2"
:Echo.Color.2
:# Replace path separators in the string, so that the final path still refers to the current path.
set "str=a%ECHO.DEL%!str:\=a%ECHO.DEL%\..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:/=a%ECHO.DEL%/..\%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%!"
set "str=!str:"=\"!"
:# Go to the script directory and search for the trailing -
pushd "%ECHO.DIR%"
findstr /p /r /a:%~1 "^^-" "!str!\..\!ECHO.FILE!" nul
popd
:# Remove the name of this script from the output. (Dependant on its length.)
for /l %%n in (1,1,12) do if not "!ECHO.FILE:~%%n!"=="" <nul set /p "=%ECHO.DEL%"
:# Remove the other unwanted characters "\..\: -"
<nul set /p "=%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%%ECHO.DEL%"
:# Append the optional CRLF
if not "%~3"=="" echo.
endlocal & goto :eof

:Echo.Color.Var %1=Color %2=StrVar [%3=/n]
if not defined %~2 goto :eof
setlocal enableDelayedExpansion
set "str=!%~2!"
goto :Echo.Color.2

:Echo.Color.Init
set "ECHO.COLOR=call :Echo.Color"
set "ECHO.DIR=%~dp0"
set "ECHO.FILE=%~nx0"
set "ECHO.FULL=%ECHO.DIR%%ECHO.FILE%"
:# Use prompt to store a backspace into a variable. (Actually backspace+space+backspace)
for /F "tokens=1 delims=#" %%a in ('"prompt #$H# & echo on & for %%b in (1) do rem"') do set "ECHO.DEL=%%a"
goto :eof

:main
call :Echo.Color 0a "a"
call :Echo.Color 0b "b"
set "txt=^" & call :Echo.Color.Var 0c txt
call :Echo.Color 0d "<"
call :Echo.Color 0e ">"
call :Echo.Color 0f "&"
call :Echo.Color 1a "|"
call :Echo.Color 1b " "
call :Echo.Color 1c "%%%%"
call :Echo.Color 1d ^"""
call :Echo.Color 1e "*"
call :Echo.Color 1f "?"
:# call :Echo.Color 2a "!"
call :Echo.Color 2b "."
call :Echo.Color 2c ".."
call :Echo.Color 2d "/"
call :Echo.Color 2e "\"
call :Echo.Color 2f "q:" /n
echo(
set complex="c:\hello world!/.\..\\a//^<%%>&|!" /^^^<%%^>^&^|!\
call :Echo.Color.Var 74 complex /n

exit /b

:# The following line must be last and not end by a CRLF.
-

PS. J'ai un problème avec la sortie du caractère ! que vous n'aviez pas dans l'exemple précédent. (Ou du moins, vous n'avez pas eu les mêmes symptômes.) A vérifier.

5 votes

Le problème avec le ! peut être résolu avec un call :Echo.Color 2f ^^^! ou lorsque l'expansion différée est activée lors de l'appel de l'utilisation de la fonction call :Echo.Color 2f ^^^^^^^!

0 votes

Bonjour, peut-être que quelque chose m'échappe, mais j'utilise votre exemple ci-dessus, ligne par ligne dans une invite de commande (non administrateur) sur Win 8.1 Update 1 et j'obtiens le résultat suivant : i.imgur.com/1CsOWdu.png - C'est bien cela ? Merci

0 votes

Idée intéressante, mais je n'utiliserais pas cette technique car le nom script doit être descriptif, mais plus le nom est long, plus vous avez d'espace mort à la fin de chaque ligne où vous ne pouvez pas imprimer en couleur. J'utiliserais toujours un nom de fichier de longueur 1, mais cela ne peut pas être descriptif, alors j'utilise un fichier temporaire.

15voto

skrebbel Points 5183

Si vous avez un Windows moderne (avec powershell installé), ce qui suit peut également fonctionner correctement

call :PrintBright Something Something

  (do actual batch stuff here)

call :PrintBright Done!
goto :eof

:PrintBright
powershell -Command Write-Host "%*" -foreground "White"

Ajustez la couleur comme vous le souhaitez.

0 votes

Bonne idée. I a développé cette réponse .

7voto

npocmaka Points 7794

Sans outils externes Il s'agit d'un fichier auto-compilé hybride bat/.net (devrait être enregistré comme .BAT ) qui peut être utilisé sur n'importe quel système ayant installé .net framework (il est rare de voir un Windows sans .NET framework même pour les plus anciennes installations XP/2003) . Il utilise le compilateur jscript.net pour créer un exe capable d'imprimer des chaînes de caractères avec une couleur d'arrière-plan/avant-plan différente uniquement pour la ligne en cours.

@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal

for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d  /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
   set "jsc=%%v"
)

if not exist "%~n0.exe" (
    "%jsc%" /nologo /out:"%~n0.exe" "%~dpsfnx0"
)

%~n0.exe %*

endlocal & exit /b %errorlevel%

*/

import System;

var arguments:String[] = Environment.GetCommandLineArgs();

var newLine = false;
var output = "";
var foregroundColor = Console.ForegroundColor;
var backgroundColor = Console.BackgroundColor;
var evaluate = false;
var currentBackground=Console.BackgroundColor;
var currentForeground=Console.ForegroundColor;

//http://stackoverflow.com/a/24294348/388389
var jsEscapes = {
  'n': '\n',
  'r': '\r',
  't': '\t',
  'f': '\f',
  'v': '\v',
  'b': '\b'
};

function decodeJsEscape(_, hex0, hex1, octal, other) {
  var hex = hex0 || hex1;
  if (hex) { return String.fromCharCode(parseInt(hex, 16)); }
  if (octal) { return String.fromCharCode(parseInt(octal, 8)); }
  return jsEscapes[other] || other;
}

function decodeJsString(s) {
  return s.replace(
      // Matches an escape sequence with UTF-16 in group 1, single byte hex in group 2,
      // octal in group 3, and arbitrary other single-character escapes in group 4.
      /\\(?:u([0-9A-Fa-f]{4})|x([0-9A-Fa-f]{2})|([0-3][0-7]{0,2}|[4-7][0-7]?)|(.))/g,
      decodeJsEscape);
}

function printHelp( ) {
   print( arguments[0] + "  -s string [-f foreground] [-b background] [-n] [-e]" );
   print( " " );
   print( " string          String to be printed" );
   print( " foreground      Foreground color - a " );
   print( "                 number between 0 and 15." );
   print( " background      Background color - a " );
   print( "                 number between 0 and 15." );
   print( " -n              Indicates if a new line should" );
   print( "                 be written at the end of the ");
   print( "                 string(by default - no)." );
   print( " -e              Evaluates special character " );
   print( "                 sequences like \\n\\b\\r and etc ");
   print( "" );
   print( "Colors :" );
   for ( var c = 0 ; c < 16 ; c++ ) {

        Console.BackgroundColor = c;
        Console.Write( " " );
        Console.BackgroundColor=currentBackground;
        Console.Write( "-"+c );
        Console.WriteLine( "" );
   }
   Console.BackgroundColor=currentBackground;

}

function errorChecker( e:Error ) {
        if ( e.message == "Input string was not in a correct format." ) {
            print( "the color parameters should be numbers between 0 and 15" );
            Environment.Exit( 1 );
        } else if (e.message == "Index was outside the bounds of the array.") {
            print( "invalid arguments" );
            Environment.Exit( 2 );
        } else {
            print ( "Error Message: " + e.message );
            print ( "Error Code: " + ( e.number & 0xFFFF ) );
            print ( "Error Name: " + e.name );
            Environment.Exit( 666 );
        }
}

function numberChecker( i:Int32 ){
    if( i > 15 || i < 0 ) {
        print("the color parameters should be numbers between 0 and 15");
        Environment.Exit(1);
    }
}

if ( arguments.length == 1 || arguments[1].toLowerCase() == "-help" || arguments[1].toLowerCase() == "-help"   ) {
    printHelp();
    Environment.Exit(0);
}

for (var arg = 1; arg <= arguments.length-1; arg++ ) {
    if ( arguments[arg].toLowerCase() == "-n" ) {
        newLine=true;
    }

    if ( arguments[arg].toLowerCase() == "-e" ) {
        evaluate=true;
    }

    if ( arguments[arg].toLowerCase() == "-s" ) {
        output=arguments[arg+1];
    }

    if ( arguments[arg].toLowerCase() == "-b" ) {

        try {
            backgroundColor=Int32.Parse( arguments[arg+1] );
        } catch(e) {
            errorChecker(e);
        }
    }

    if ( arguments[arg].toLowerCase() == "-f" ) {
        try {
            foregroundColor=Int32.Parse(arguments[arg+1]);
        } catch(e) {
            errorChecker(e);
        }
    }
}

Console.BackgroundColor = backgroundColor ;
Console.ForegroundColor = foregroundColor ;

if ( evaluate ) {
    output=decodeJsString(output);
}

if ( newLine ) {
    Console.WriteLine(output);  
} else {
    Console.Write(output);

}

Console.BackgroundColor = currentBackground;
Console.ForegroundColor = currentForeground;

Exemple coloroutput.bat -s "aa\nbb\n\u0025cc" -b 10 -f 3 -n -e

Vous pouvez aussi vérifier la fonction couleur de Carlos -> http://www.dostips.com/forum/viewtopic.php?f=3&t=4453

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X