- echoo N Y String
Jako, że już dawno nutrowało mnie to zagadnienie, postanowiłem zrobić coś w tym kierunku. Niestety, swojego czasu uprzedził mnie kolega Gynvael (), jednak to mnie nie zniechęciło. Wręcz przeciwnie, poczułem ochotę rozwiązania problemu w inny sposób. Jak, dalej zapewne każdy wywnioskuje, do głowy przyszło mi bardzo proste ale skuteczne rozwiązanie. "Dlaczego by tak nie napisać do tego bilbioteczki?". Jak pomyślałem, tak się stało. Poniżej zamieszczam kod (brzydki ale działający).
- Kod: Zaznacz cały
- #include <iostream>
- #include <string>
- #include <windows.h>
- #include <stdio.h>
- #include <stdlib.h>
- using namespace std;
- int main(int argc, char * argv[]){
- if(argc-1 == 0){
- printf("Kolory, jak w komendzie COLOR. Zastosowanie: echoo 0 1 czesc. Wyswietli 'czesc' niebieska czcionka na czarnym tle.");
- system("PAUSE");
- }else{
- char * arg = argv[1];
- int argco = atoi(arg);
- char * arg2 = argv[2];
- int argco2 = atoi(arg2);
- int ktlo = 0;
- int ktekst = FOREGROUND_GREEN;
- if(argco == 0){
- ktlo = 0;
- }
- if(argco == 1){
- ktlo = BACKGROUND_BLUE;
- }
- if(argco == 2){
- ktlo = BACKGROUND_GREEN;
- }
- if(argco == 3){
- ktlo = BACKGROUND_GREEN | BACKGROUND_BLUE;
- }
- if(argco == 4){
- ktlo = BACKGROUND_RED;
- }
- if(argco == 5){
- ktlo = BACKGROUND_RED | BACKGROUND_BLUE;
- }
- if(argco == 6){
- ktlo = BACKGROUND_RED | BACKGROUND_GREEN;
- }
- if(argco == 7){
- ktlo = BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;
- }
- if(argco == 8){
- ktlo = BACKGROUND_INTENSITY | 0;
- }
- if(argco == 9){
- ktlo = BACKGROUND_INTENSITY | BACKGROUND_BLUE;
- }
- if(argco == 10){
- ktlo = BACKGROUND_INTENSITY | BACKGROUND_GREEN;
- }
- if(argco == 11){
- ktlo = BACKGROUND_INTENSITY | BACKGROUND_BLUE | BACKGROUND_GREEN;
- }
- if(argco == 12){
- ktlo = BACKGROUND_INTENSITY | BACKGROUND_RED;
- }
- if(argco == 13){
- ktlo = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE;
- }
- if(argco == 14){
- ktlo = BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN;
- }
- if(argco == 15){
- ktlo = BACKGROUND_INTENSITY | BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED;
- }
- /////////////////////////////////////////////////////////////////////
- if(argco2 == 0){
- ktekst = 0;
- }
- if(argco2 == 1){
- ktekst = FOREGROUND_BLUE;
- }
- if(argco2 == 2){
- ktekst = FOREGROUND_GREEN;
- }
- if(argco2 == 3){
- ktekst = FOREGROUND_GREEN | FOREGROUND_BLUE;
- }
- if(argco2 == 4){
- ktekst = FOREGROUND_RED;
- }
- if(argco2 == 5){
- ktekst = FOREGROUND_RED | FOREGROUND_BLUE;
- }
- if(argco2 == 6){
- ktekst = FOREGROUND_RED | FOREGROUND_GREEN;
- }
- if(argco2 == 7){
- ktekst = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;
- }
- if(argco2 == 8){
- ktekst = FOREGROUND_INTENSITY | 0;
- }
- if(argco2 == 9){
- ktekst = FOREGROUND_INTENSITY | FOREGROUND_BLUE;
- }
- if(argco2 == 10){
- ktekst = FOREGROUND_INTENSITY | FOREGROUND_GREEN;
- }
- if(argco2 == 11){
- ktekst = FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_GREEN;
- }
- if(argco2 == 12){
- ktekst = FOREGROUND_INTENSITY | FOREGROUND_RED;
- }
- if(argco2 == 13){
- ktekst = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE;
- }
- if(argco2 == 14){
- ktekst = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN;
- }
- if(argco2 == 15){
- ktekst = FOREGROUND_INTENSITY | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED;
- }
- SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), ktekst | ktlo);
- for(int i = 3; i<=argc-1;i++){
- printf("%s ", argv[i]);
- }
- }
- return 0;
- }
Jak widać, skorzystałem tutaj z gotowych, microsoftowych funkcji, co nie ma większego znaczenia, gdyż i tak całość jest przeznaczona dla skryptów pisanych w batchu.
Wynik takowej zabawy można zobaczyć pod adresem http://patrykuss.python.org.pl/photos/col_cmd.png.
Cały wpis dotyczący powyższej "biblioteki" dostępny jest pod adresem http://patrykuss.python.org.pl/news,10.html.
PS. Całkiem zapomniałbym o sposobie użycia :D
- Kod: Zaznacz cały
N- kolor tła
Y- kolor pierwszego planu
Sring- naturalnie string wejściowy.



