Witam. Napisałem mały programik w c++, taki zamiennik systemowego cmd.exe .
Koloruje inaczej wpisywany komendy, inaczej wyjście poleceń itd… itp…
Lecz mam kilka problemów:
-
Mimo wydania polecenia
cd jakiś_katalog
program nadal pozostaje w bieżącym. 2. Jak zrobić żeby polecenie było wpisywane zaraz obok ścieżki b.katalogu a nie w nowej lini (tak jak ma to miejsce w norm. cmd). Kod źródłowy:
#include
#include
#include
using namespace std;
int main()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
system("echo %date% %time% ");
system("echo %CD%: ");
string polecenie;
string err;
int a=1;
while(a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout << ">>> ";
getline(cin,polecenie);
cout << "\n\n";
if (polecenie == "end")
{
a=0;
}
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY);
switch(system(polecenie.c_str()))
{
case 0:
err="OK";
break;
default:
err="ERROR";
break;
}
cout << "\n-----------------------------\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
cout << err << "\n\n\n";
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
system("echo %date% %time% READY!");
system("echo %CD%: ");
}
}
}
korzystam z dev c++ 4.9.9.2, windows 7 oraz XP – Dodane 01.05.2009 (Pt) 14:43 – ok już rozwiązałem problem nie było łatwo ale może komuś się to przyda: użyłem funkcji substr() i chdir() a to kod który analizuje wprowadzone polecenie pod kątem występowania CD i pobiera ścieżkę, po czym wykonuje chdir
if (polecenie.substr(0,4) == "cd..")
{
chdir("..");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout << "\n-----------------------------\n";
continue;
}
if (polecenie.substr(0,3) == "cd ")
{
ptch=polecenie.substr(3);
chdir(ptch.c_str());
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout << "\n-----------------------------\n";
continue;
}