Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
compatibilité des couleurs avec Windows 10 et Windows 7
Auteur Message
Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
Voici le code :

Code:
@echo off
mode 80, 22
cls
echo.
echo  Test
echo  ____
echo.
echo.
echo    [1] Une tasse de caf‚              
echo    [2] Une bouteille d'eau            
echo    [3] Une maison                     
echo    [4] Une voiture                    
echo.
set CHOIX=quit
set /P CHOIX=Que d‚sirez-vous ?



Cela ressemble à ceci quand ça fonctionne :



Avec Windows 10 cela fonctionne très bien, mais pas avec Windows 7.
Pourriez vous m'aider sur ce point ? Merci beaucoup!

/kim974



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
Quelqu'un peut m'aider ?



Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
Réponse très bien détaillé ici : https://stackoverflow.com/a/38617204/10032824

    Solution 1
    ___________________________________

    Néanmoins, tu peux utiliser un hack avec findstr pour afficher différentes couleurs sur la console (fonctionne sur toutes les versions de window à partir d'xp)
    Ce qui peut donner (en reprenant ton script) :

      Code:
      @echo off

      rem Init color :
      prompt $g
      for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a"
      set color=call :color

      mode 80, 22
      color 0f
      cls
      echo.
      echo  Test
      echo  ____
      echo.
      echo.
      %color% 1f " [1] Une tasse de caf‚" 1
      %color% 9f " [2] Une bouteille d'eau" 1
      %color% 4f " [3] Une maison" 1
      %color% cf " [4] Une voiture" 1
      echo.
      set CHOIX=quit
      set /P CHOIX=Que d‚sirez-vous ?




      pause>nul&exit
      :color <color> <text> <CR>
      set nL=%3
      if not defined nL echo requires third argument & pause > nul & goto :eof
      if %3 == 0 (
          <nul set /p ".=%bs%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
      ) else if %3 == 1 (
          echo %bs%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof
      )
      exit /b



    Solution 2
    ___________________________________

    Le mieux est d'utilisé une commande externe tel que batbox (de Darkbatcher) car elle est légère et très simple à utiliser
    En reprenant ton code ça peut donner ceci :
    (fonctionne sur toutes les versions de window à partir d'xp)

      Code:
      @echo off

      if not exist batbox.exe call :make_batbox

      mode 80, 22
      color 0f
      cls
      echo.
      echo  Test
      echo  ____
      echo.
      echo.

      batbox /c 0x0f /d "  " /c 0x1f /d " [1] Une tasse de caf" /a 130 /d "          "&echo;
      batbox /c 0x0f /d "  " /c 0x9f /d " [2] Une bouteille d'eau        "&echo;
      batbox /c 0x0f /d "  " /c 0x4f /d " [3] Une maison                 "&echo;
      batbox /c 0x0f /d "  " /c 0xcf /d " [4] Une voiture                " /c 0x0f &echo;
      echo.
      set CHOIX=quit
      set /P CHOIX=Que d‚sirez-vous ?




      pause>nul&exit
      :make_batbox
      :: BatBox - copyright (c) 2011 - 2014 Romain Garbi (Darkbatcher)
      :: copyright (c) 2014 Taz8
      :: This is licensed under BSD 3-clause license.
      for %%b in (
      4D534346000000005A040000000000002C000000000000000301010001000000
      000000004700000001000100000800000000000000006546F2B1200062617462
      6F782E65786500D7E54E4C0B040008434BB5555F685B55183F499BA06D4DB235
      295311EFA4151C23E04A7C2854B2759D8EA51A92B88A14BAFCB9C9BD697A6FB8
      B9B19DF32123093223F8361FF6B212F0C597227B98A26C359382B46FC38789FB
      F7306E9C6011FF14D15E7FDFB9376D26854DD093FCCE39DFEFFBCE777EE7BBE7
      26536F55988331D6CB7CCC34190B938116660F6F15C0F3ECE71E76E9F1F5FD97
      1D91F5FD09492E09454DCD69C979219D5414551752A2A09515415684A3AFC785
      793523069FE81BEEE4884E32167138D8DBAB9B890E779B791DFD0EC731E686E1
      B6495F17481D8D4EC66CB9D06F37C1E2477E66ACA77BDD76A46DDAEDC341C6E6
      9C8F70D8FFB805B385A48EF190DB16E4B67477B753548AFFB9497D436196B706
      692B80EE0F74662083BE7ACD9FFFD50C44FC61D67453D86FB6E1A4E00A0A2A39
      CFA27B6F9056E87CC54075D3F4D6AEE224CD202DF1492F913744861978D78A31
      62F04FBC3F58F94678D1CC7E36C0C63E3A83286F6D14FC2BB9BB1BED1BA6691A
      7B6045CD909B2F4D60E3760B74E58C63D65BF740BB1928205FFDAAB7F6097833
      700AD63855CC5BEFE76E225CB8D4ACD940FAF62F506C7C81AEC745A29A2FA3CB
      363D486F7CCCD931628F70D6479B863CBCB704BC49028E90AED3085E751D1BB4
      DE91264D24DEBDC00B31835DDB4F52E01C02E35D6CF5DA636D468E35ACFBDDF5
      1CF2FE05D35BBF8F7EE9A921EB303729E24744B4AF6F61761133E37B32BF26F3
      4F7A69703452738988FBA481CE63DCA1199DA17D010EE9F92EF112C28D15F21F
      A067D7EDCA50A63C655A82FFDC2AAA0A661A7B0C90270A8FE9A2A22CEDD46B69
      A748ED6F1190DF67869C3C5B146BAC3BE590F6F25D2C7E067C759C1C78CCEB48
      99AD8E93DFE9AD5F81D56A8C0FC13AB7B5F293EFEC3DFA21EAE1E5894E9F940E
      76D5CFD73286A0328F4FDC0C14ADEBD43287BF3C81A0AA8B2E706FE3191A1A4F
      D7BFF3D6E8A56FE5B7EF5FCD7A08FFB8958B569A8E59E166AF196AF08D25CB1C
      29B191CC18FFF6EDFE2A7DEA0BB30D60744F985DC03883B10CAC00CBC00DA07F
      2F8A877104E35C2E99CECCAB0B52F1B4124CA5788E83819D7CB7F0D334037BD8
      BFC3FD002E02BBB78BDB0437E0DF5DD354FCE4442C113C1A89B01393B1D72623
      A387B8C1DE884FC63A73BFBDD8BF9D242EA90BD3B2925117C8D2C1D780F3C032
      B006DC060C8A87C07DB6E8478DC33B2EEA713DF36A52C91444BE9FA84FA84A49
      2D8853F87F789049888BFA615DD7E45459171FF04C94B592AA45D592ACCBAA42
      AB626232633B8F2BC5B27E98E20BA258DC65DD7125ABDA5A1EC2772AF101F49F
      072E02CBC065E02B600DB80EDC04EE011BF639FF6D3C63454D56F42CCD6673A2
      9E96F88CA6F34959496AB9126C7151D6393F9792AC5949D774B5C039B5285221
      66173499178BCD6A28098DE9825AB298B45492DF11EDBFBCBF01           
      ) Do >>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
      ECHO WScript.StdOut.Write Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
      Cscript /b /e:vbs t.dat>batbox.ex_
      Del /f /q /a t.dat >nul 2>&1
      Expand -r batbox.ex_ >nul 2>&1
      Del /f /q /a batbox.ex_ >nul 2>&1
      exit /b


    Voici une petite liste de commande externe similaire : darkbox (de TSnake41) , superbox (de Darkbatcher), txtcolor (de Carlos, uniquement les couleurs par contre)





Dernière édition par Flammrock le Mar 21 Aoû 2018 - 13:34; édité 1 fois

______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
La solution 1 que tu proposes ne gère pas les espaces.

Et la solution 2 fonctionne mais me crée un fichier exécutable, trop intrusive, et le premier lancement est un peu lent.

Il y aurait il une troisième option ?

Merci beaucoup!



Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
Kim974 a écrit:
La solution 1 que tu proposes ne gère pas les espaces.

Et la solution 2 fonctionne mais me crée un fichier exécutable, trop intrusive, et le premier lancement est un peu lent.

Il y aurait il une troisième option ?

Merci beaucoup!


Le problème est que cmd n'a pas vraiment été conçu pour afficher des couleurs, donc pour les versions avant windows 10 il faut soit utilisé une commande externe soit utilisé un hack (avec findstr)

Si le fichier .exe généré te gène, tu peux toutefois le générer dans le dossier %temp% par exemple
Il suffit de jouer avec pushd et popd ( https://ss64.com/nt/pushd.html )

Code:
pushd "%temp%"

rem ... on génère la commande ...

popd


Ce qui donne avec le code que je t'avais mis :
    Code:
    @echo off

    set batbox="%temp%\batbox.exe"
    if not exist %batbox% call :make_batbox

    mode 80, 22
    color 0f
    cls
    echo.
    echo  Test
    echo  ____
    echo.
    echo.

    %batbox% /c 0x0f /d "  " /c 0x1f /d " [1] Une tasse de caf" /a 130 /d "          "&echo;
    %batbox% /c 0x0f /d "  " /c 0x9f /d " [2] Une bouteille d'eau        "&echo;
    %batbox% /c 0x0f /d "  " /c 0x4f /d " [3] Une maison                 "&echo;
    %batbox% /c 0x0f /d "  " /c 0xcf /d " [4] Une voiture                " /c 0x0f &echo;
    echo.
    set CHOIX=quit
    set /P CHOIX=Que d‚sirez-vous ?




    pause>nul&exit
    :make_batbox
    pushd "%temp%"
    :: BatBox - copyright (c) 2011 - 2014 Romain Garbi (Darkbatcher)
    :: copyright (c) 2014 Taz8
    :: This is licensed under BSD 3-clause license.
    for %%b in (
    4D534346000000005A040000000000002C000000000000000301010001000000
    000000004700000001000100000800000000000000006546F2B1200062617462
    6F782E65786500D7E54E4C0B040008434BB5555F685B55183F499BA06D4DB235
    295311EFA4151C23E04A7C2854B2759D8EA51A92B88A14BAFCB9C9BD697A6FB8
    B9B19DF32123093223F8361FF6B212F0C597227B98A26C359382B46FC38789FB
    F7306E9C6011FF14D15E7FDFB9376D26854DD093FCCE39DFEFFBCE777EE7BBE7
    26536F55988331D6CB7CCC34190B938116660F6F15C0F3ECE71E76E9F1F5FD97
    1D91F5FD09492E09454DCD69C979219D5414551752A2A09515415684A3AFC785
    793523069FE81BEEE4884E32167138D8DBAB9B890E779B791DFD0EC731E686E1
    B6495F17481D8D4EC66CB9D06F37C1E2477E66ACA77BDD76A46DDAEDC341C6E6
    9C8F70D8FFB805B385A48EF190DB16E4B67477B753548AFFB9497D436196B706
    692B80EE0F74662083BE7ACD9FFFD50C44FC61D67453D86FB6E1A4E00A0A2A39
    CFA27B6F9056E87CC54075D3F4D6AEE224CD202DF1492F913744861978D78A31
    62F04FBC3F58F94678D1CC7E36C0C63E3A83286F6D14FC2BB9BB1BED1BA6691A
    7B6045CD909B2F4D60E3760B74E58C63D65BF740BB1928205FFDAAB7F6097833
    700AD63855CC5BEFE76E225CB8D4ACD940FAF62F506C7C81AEC745A29A2FA3CB
    363D486F7CCCD931628F70D6479B863CBCB704BC49028E90AED3085E751D1BB4
    DE91264D24DEBDC00B31835DDB4F52E01C02E35D6CF5DA636D468E35ACFBDDF5
    1CF2FE05D35BBF8F7EE9A921EB303729E24744B4AF6F61761133E37B32BF26F3
    4F7A69703452738988FBA481CE63DCA1199DA17D010EE9F92EF112C28D15F21F
    A067D7EDCA50A63C655A82FFDC2AAA0A661A7B0C90270A8FE9A2A22CEDD46B69
    A748ED6F1190DF67869C3C5B146BAC3BE590F6F25D2C7E067C759C1C78CCEB48
    99AD8E93DFE9AD5F81D56A8C0FC13AB7B5F293EFEC3DFA21EAE1E5894E9F940E
    76D5CFD73286A0328F4FDC0C14ADEBD43287BF3C81A0AA8B2E706FE3191A1A4F
    D7BFF3D6E8A56FE5B7EF5FCD7A08FFB8958B569A8E59E166AF196AF08D25CB1C
    29B191CC18FFF6EDFE2A7DEA0BB30D60744F985DC03883B10CAC00CBC00DA07F
    2F8A877104E35C2E99CECCAB0B52F1B4124CA5788E83819D7CB7F0D334037BD8
    BFC3FD002E02BBB78BDB0437E0DF5DD354FCE4442C113C1A89B01393B1D72623
    A387B8C1DE884FC63A73BFBDD8BF9D242EA90BD3B2925117C8D2C1D780F3C032
    B006DC060C8A87C07DB6E8478DC33B2EEA713DF36A52C91444BE9FA84FA84A49
    2D8853F87F789049888BFA615DD7E45459171FF04C94B592AA45D592ACCBAA42
    AB626232633B8F2BC5B27E98E20BA258DC65DD7125ABDA5A1EC2772AF101F49F
    072E02CBC065E02B600DB80EDC04EE011BF639FF6D3C63454D56F42CCD6673A2
    9E96F88CA6F34959496AB9126C7151D6393F9792AC5949D774B5C039B5285221
    66173499178BCD6A28098DE9825AB298B45492DF11EDBFBCBF01           
    ) Do >>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
    ECHO WScript.StdOut.Write Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
    Cscript /b /e:vbs t.dat>batbox.ex_
    Del /f /q /a t.dat >nul 2>&1
    Expand -r batbox.ex_ >nul 2>&1
    Del /f /q /a batbox.ex_ >nul 2>&1
    popd
    exit /b



Sinon je viens de découvrir une commande externe qui pourrait te convenir (par contre elle est très volumineuse ~12ko ( https://github.com/jeremejevs/cmdcolor )
Avec ton code ça donne ceci : https://pastebin.com/G2AKYDT8

Comme tu peux le voir la syntaxe est pratiquement la même :
Code:
echo   \033[101;104m [1] Une tasse de caf‚              \033[0m | %cmdcolor%
echo   \033[101;46m [2] Une bouteille d'eau            \033[0m | %cmdcolor%
echo   \033[101;41m [3] Une maison                     \033[0m | %cmdcolor%
echo   \033[101;93m [4] Une voiture                    \033[0m | %cmdcolor%





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
Kim974 a écrit:
La solution 1 que tu proposes ne gère pas les espaces.

Et la solution 2 fonctionne mais me crée un fichier exécutable, trop intrusive, et le premier lancement est un peu lent.

Il y aurait il une troisième option ?

Merci beaucoup!


Pour gérer les espaces avec findstr, il faut mettre le message entre guillemets.
Cependant, comme tu utilises des caractères d'échappements ANSI dans ta version
de windows 10, tu pourras utiliser le même code sur windows 7 en utilisant "ansicon".
Le tout est que le script vérifie s'il s'exécute sur une autre version que windows 10, dès
lors il lui faudra charger "ansicon", rien de plus, et le reste du code ne change à priori pas.

À noter que les caractères d'échappements ce n'est pas que de la coloration syntaxique,
il est possible de faire beaucoup plus de choses avec.



Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
Il est aussi possible d'utiliser ansicon pour ajouter le support des séquences ANSI (VT100) dans les vielles versions de conhost de Windows.

Il faut lancer un autre cmd ou alors... hmm, j'ai une idée, créer une commande externe pour "monkey-patch" cmd (par injection de dll).

Cependant, c'est obligatoire qu'il faille un .exe (voire en plus un .dll) mais ça fonctionnera sans modifier le code (ou du moins, en ajoutant juste une ligne).




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message compatibilité des couleurs avec Windows 10 et Windows 7 
Coucou

TSnake41 a écrit:
Il est aussi possible d'utiliser ansicon pour ajouter le support des séquences ANSI (VT100) dans les vielles versions de conhost de Windows.


Petite précision, comme ansicon fait une injection dans le process dans conhost, il faut fournir deux version 32 et 64 bits pour pouvoir s'adapter si on est sur une console 32bits ou 64 bits. Bref, pas forcément le plus pratique pour une commande à distribuer avec un batch...



Visiter le site web du posteur Skype
Message compatibilité des couleurs avec Windows 10 et Windows 7 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch