FORUM Tom's Hardware » Programmation » Autre » Texte en couleur dans une fenêtre MS DOS
 

Texte en couleur dans une fenêtre MS DOS

Il y a 303 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Texte en couleur dans une fenêtre MS DOS
 
Plus d'informations

Bonjour à tous, j’aimerai pouvoir mettre une couleur sur certain mots dans un batch pour que ses mots soit afficher d’une couleur différente du reste du texte dans une fenêtre MS DOS.
Exemple :
 
Sauvegarder le répertoire [color=red]Application Data[/color]
Sauvegarder le répertoire [color=red]Favoris[/color]
 
Y des gens ici qui savent comment je peut faire ?
Je ne souhait pas changer la couleur de tout le texte de mon batch, comme avec la commande « @color » qui se place en entête de batch, mais juste des mots clefs.

pourquoi faire cent fois la même chose ?
Plus d'informations

pour ça faut charger ANSI.SYS, et ça ne marchera que sous 9x
 
après la commande pour mettre en couleur c'est ^C[COULm (le charactere ^C est en fait une fleche qui va en arrière, sous EDIT.com on la fait avec Control+P puis Control+C (d'ou la notation ^C)) et coul est un nombre qui définit un attribut de couleur

Plus d'informations

Re bonjour Batchy.
Désolé mais j'ai pas bien saisie.

Plus d'informations

http://www.uv.tietgen.dk/staff/mlh [...] si-sys.htm
 
et ANSI.SYS est bien antérieur à Windows 95


Message édité par Anubis_ le 08-09-2005 à 11:06:38
Plus d'informations

Si c'est uiquement pour Windows tu peux utiliser la librairie Conio.
Je vais me faire fraper par les puristes, moi :p

Plus d'informations

Bonjour Anubis_ et merci pour ce lien.
N’auriez vous pas un exemple de code ?
Je ne comprend pas ce qu’il y a sur votre lien.
 
Bonjour streetpc et merci, pouriez vous m »en dire un peut plus sur cette librairie Conio ?

Plus d'informations

t'es pas obligé de me vouvoyer :p
 
Conio est une librairie développée par Borland pour son C++ Builder. Elle donne accès à un certain nombre d'outils pour la console, entreautre changer la couleur d'avant et d'arrière plan, repositionner le curseur. Elle est très utilisée et a donc été portée sur d'autres compilateurs. Son équivalent (amélioré ?) sous linux est ncurses.
Elle ne fait pas partie de la librairie C standart, c'est pourquoi elle est dépréciée par les puristes...
 
un exemple d'utilisation de Conio en C/C++:
http://conio.sourceforge.net/tutorial.html
si tu utilise Dev-C++:
http://www.ece.fr/~lavoillo/Conio.php
ou sans doute mieux http://conio.sourceforge.net/


Message édité par streetpc le 08-09-2005 à 17:57:09
Plus d'informations

Vous etes sur que je peux metre texte en couleur dans une fenêtre MS DOS avec sa ?
S"est du C++

Plus d'informations

bien sûr que j'en sui sûr
à priori si il y a un exemple en C++, c'est que tu peux l'utiliser en C++ :o

Plus d'informations

Bionjour streetpc et merci encore.
 
Pouriez vous me dire comment je doit faire j'arrive pas a comprendre tout sa ?

Plus d'informations

prendre un bon bouquin (ou un bon tutorial)sur le C ou le C++
et t'exercer, par exemple sur Dev-C++ (gratuit)
 
tu vouvoie tout le temps les gens sur un forum ? :)


Message édité par streetpc le 11-09-2005 à 11:53:54
zeb
Profil : Modérateur libre
Plus d'informations

Salut Lunnatick,
 
Je vais tenter de résumer les bonnes idées citées ci-dessus.
 
ANSI est une norme permettant sur différents systèmes d'utiliser des caractères d'échappement identiques (Invisible mais ayant un sens pour la console).
 
Pour l'utiliser sous DOS et/ou sous Windows, il faut charger le pilote ANSI.SYS. Ceci se fait par la commande

Code :
  1. DEVICE=C:\WINDOWS\SYSTEM32\ANSI.SYS

qu'il faut ajouter au fichier C:\CONFIG.SYS  Attention, c'est à toi de vérifier que le chemin est bon. A partir de là, les séquences d'échappement pourront être utilisées sur ton système.
 
Ex: Pour mettre en gras, c'est la fonction m, de paramètre 1 . Pour revenir à la normale, c'est le paramètre 0. L'échappement se fait grâce aux caractères <ESC>[. (Et pas control+P control+C, hein batchy !). En résumé :

Code :
  1. ECHO <ESC>[1mSALUT<ESC>[0m

devrait saluer en gras et revenir au mode normal !
 
Ton exemple Sauvegarder le répertoire [color=red]Favoris[/color] devient :

Code :
  1. ECHO Sauvegarder le répertoire <ESC>[31mFavoris<ESC>[0m

31 est le code pour le rouge (cf. le lien d'Anubis)
 
Le caractère <ESC> est le caractère n°27. Il s'écrit 033 en octal ou 0x1B en hexadécimal.
 
Et voilà, tu peux maintenant tout afficher.
 
Si tu ne peux pas ajouter le pilote dans le CONFIG.SYS, il te reste la possibilité de programmer toi-même une fonction ECHO. Le plus simple est de créer un petit programme en C en appelant les fonctions de CONIO.H
 
Mais avant, il te faudra te lancer dans l'apprentissage du C/C++.
 
Bon courage.


Message édité par zeb le 11-09-2005 à 15:25:35
pourquoi faire cent fois la même chose ?
Plus d'informations

ESC is the 1 byte code for escape.
 
    * In ASCII, ESC is 27 decimal or 1B hexadecimal.
    * In QBASIC, the code for escape is CHR$(27).
    * At the command line using PROMPT, the escape code is $e

sous edit.com pour le faire le char <ESC> il faut faire Ctrl+P puis Ctrl+C, ou alors Ctrl+P puis Echap

Plus d'informations

Bonjour !
 
Je compose en QBASIC un logiciel qui va chercher un fichier sur un serveur FTP. Pour cela, j'utilise la commande FTP de l'interface MS-DOS. Mais hélas, j'ai beau mettre "Color 0,0" (texte noir sur fond noir) la commande affiche toujours en gris sur noir le login et le mot de passe du FTP !
 
Comment pourrai-je faire pour ne plus voir ces commandes ? J'avais donc pensé les afficher en noir sur noir grâce à une commande SHELL mais je ne sais pas comment faire. J'ai essayé SHELL "PROMPT $e[31m" pour mettre le texte en rouge mais même cette commande simple n'a pas fonctionné !
 
Qui peut m'aider ?? Merci d'avance !

pourquoi faire cent fois la même chose ?
Plus d'informations

redirige plutot ta commande vers le périph virtuel 'nul' :
 
ftp --ta-ligne-de-commande > nul

Plus d'informations

Heum.. Je ne vois pas trop comment rediriger ça... Voici un extrait de mon code pour t'aider à comprendre le fonctionnement :
 

Code :
  1. ' Je crée un fichier comprenant la procédure à suivre
  2. OPEN "ftp.tmp" FOR OUTPUT AS #1
  3. PRINT #1, "USER monlogin monpass"
  4. PRINT #1, "ASCII"
  5. PRINT #1, "GET FICHIER.TXT"
  6. PRINT #1, "bye"
  7. CLOSE #1
  8. ' J'utilise la commande FTP qui exécute le fichier de procédure auprès du serveur indiqué en fin de ligne
  9. SHELL "FTP -v -n -s:ftp.tmp serveur.ftp.com"


 
Donc là, ça affiche exactement les 4 commandes ci-dessus avec le prompt FTP> devant. Comment les masquer ? Mon idée de départ était d'écrire en noir sur noir, mais il y a peut-être une meilleure solution ?
 
Merci d'avance à toi, Batchy, et aussi aux autres qui pourront contribuer à faire avancer mon problème.


Message édité par Zyzomis le 14-09-2005 à 09:36:44
pourquoi faire cent fois la même chose ?
Plus d'informations

redirige ta commande ...

Code :
  1. ' Je crée un fichier comprenant la procédure à suivre
  2. OPEN "ftp.tmp" FOR OUTPUT AS #1
  3. PRINT #1, "USER monlogin monpass"
  4. PRINT #1, "ASCII"
  5. PRINT #1, "GET FICHIER.TXT"
  6. PRINT #1, "bye"
  7. CLOSE #1
  8. ' on fait la redirection à l'interieur de la commande shell
  9. SHELL "FTP -v -n -s:ftp.tmp serveur.ftp.com > nul"


Plus d'informations

Code :
  1. SHELL "FTP -v -n -s:ftp.tmp serveur.ftp.com > nul"


Enfer et damnation !
 
Dans l'invite de commande, ça marche très bien... Sous QBasic ça ne marche pas ! :-S
Cela m'affiche toujours les 4 commandes lors de l'exécution de mon programme ! Scrogneugneu !

zeb
Profil : Modérateur libre
Plus d'informations

Plutôt que du QBASIC, essaie un script shell. En MSDOS, ça se dit BATCH et ça fait :

Code :
  1. @ECHO OFF
  2. ECHO USER tonlogin tonpass >  ftp.tmp
  3. ECHO ASCII                 >> ftp.tmp
  4. ECHO GET FICHIER.TXT       >> ftp.tmp
  5. ECHO BYE                   >> ftp.tmp
  6. FTP -v -n -s:ftp.tmp serveur.ftp.com > NUL
  7. DEL ftp.tmp

Plus d'informations

a écrit :

Plutôt que du QBASIC, essaie un script shell. En MSDOS, ça se dit BATCH et ça fait :

Code :
  1. @ECHO OFF
  2. ECHO USER tonlogin tonpass >  ftp.tmp
  3. ECHO ASCII                 >> ftp.tmp
  4. ECHO GET FICHIER.TXT       >> ftp.tmp
  5. ECHO BYE                   >> ftp.tmp
  6. FTP -v -n -s:ftp.tmp serveur.ftp.com > NUL
  7. DEL ftp.tmp



Alors... faire un .BAT et l'exécuter par la commande SHELL "GOFTP.BAT" m'affichait toujours les commandes à l'écran. J'ai trouvé une parade un peu tordue, mais bon...
 
J'ai créé un exécutable sous RapidQ contenant uniquement PRINT "PATIENTEZ" : SHELL "COMMFTP.BAT"
Mon programme en QBasic crée un fichier COMMFTP.BAT contenant le texte ci-dessus (qui fonctionne parfaitement HORS du QBasic, merci Zeb !!) puis il lance la commande SHELL "GOFTP.EXE".
L'exécutable se lance, il affiche "PATIENTEZ" et les opérations s'effectuent de façon tout à fait transparente.
 
Alors oui, c'est tordu, mais l'important c'est d'y arriver !
 
Merci à Zeb et Batchy pour votre aide.


Message édité par Zyzomis le 24-09-2005 à 17:30:07
zeb
Profil : Modérateur libre
Plus d'informations

Et si au lieu de SHELL "TRUC.BAT" tu faisais directement TRUC.BAT, peut-être que ça marcherait mieux ???


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » Texte en couleur dans une fenêtre MS DOS
 

Annonces Google