Смекни!
smekni.com

Интерпретатор команд MS DOS (стр. 3 из 3)

Разделяем строку фаил на наз и расширение

for (int q=0;q<strlen(nbb);q++){ цикл

if (nbb[q]=='.') fll=1; Если точка то флаг 1

if (fll==0) {dt[q]=nbb[q]; } Если 0 копируем в DT

if (fll==1) {ii++;dt2[ii]=nbb[q]; } Если 1 копируем в DT2

}

//____________________________________________________________

//cout<<"&bsol;n REEEEE111--- "<<dt;

//cout<<"&bsol;n REEEEE222--- "<<dt2;

//---------------------------------------------------------------------------

struct ffblk ffblk; Структура о файле

int done;

done = findfirst(fs,&ffblk,0); ишет фаилы

if (done==-1) cout<<"&bsol;nError"; если нет то ошибка

while (!done) начало поиска

{

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

zt[0]='&bsol;0'; zt2[0]='&bsol;0'; fll=0;ii=-2;nnj=ffblk.ff_name; ji=0;jiz=0; Установка перемен

Разделение первого пар файла на имя и расширение

for (q=0;q<strlen(nnj);q++){ цикл

if (nnj[q]=='.') fll=1; если точка то флаг 1

if (fll==0) {ji++;zt[q]=nnj[q]; } Если 0 копируем в ZT

if (fll==1) {jiz++;ii++;zt2[ii]=nnj[q]; } } Если 1 копируем в ZT2

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

zt[ji]='&bsol;0'; zt2[jiz-1]='&bsol;0'; char *rrr; rrr=NULL; Обнулить перем

char *path2,bpn[254]; установка перем

path2=GIP(fss); Обработка моей функции

bpn[0]='&bsol;0'; strcpy(bpn,path2); копир в BPN

Если во втором параметре есть звёздочки то из первого парам заменяется второй

Замена у второго параметра имени именем первого параметра

if (dt[0]!='*'){ strcat(bpn,dt); strcat(bpn,"."); } else

{ strcat(bpn,zt); strcat(bpn,"."); }

if (dt2[0]!='*') strcat(bpn,dt2); else strcat(bpn,zt2);

Замена у второго параметра расширения расширением первого параметра

strlwr(bpn); уменьшение символов

strcpy(kr,sm); копирует в kr путь без имени файла

strrev(kr); реверс строки

newfil = strstr(kr, "&bsol;"); отрезает до "&bsol;"

strrev(newfil);реверс строки

strlwr(newfil);уменьшает символы

FILCOP(GAD(fs,ffblk.ff_name),bpn); Обработка моей функции и копирование

done = findnext(&ffblk); следующий фаил

}

//---------------------------------------------------------------------------

return (0);

}

//MAIN----------------------------------------------------------------------

void main()

{

char s[254],*ptr,*lptr; установка переменных

gotoxy(16,0); установка текста в опред. части экрана

cout<<"Interpretator commands DOS (COPY,DEL,REN)"; вывод на экран текста

gotoxy(0,23); установка текста в опред. части экрана

Enter: метка

cout<<"&bsol;n>>>"; вывод на экран текста

gets(s); strlwr(s); чтение с клавиатуры и уменшение символов

//++++++++++++++++DEL==================

strcpy(kr,sm); копирует в kr путь без имени файла

strrev(kr); реверс строки

newfil = strstr(kr, "&bsol;"); отрезает до "&bsol;"

strrev(newfil);реверс строки

strlwr(newfil);уменьшает символы

ptr = strstr(s, "del "); ишет "del "

if (strlen(ptr)!=0) { если есть

strcpy(s, ptr); копирует строку в S

int i,vb=-1; char sg[254]; установка переменных

for (i=4;i<strlen(s);i++){ Удаляет "del "

vb++;

sg[vb]=s[i]; заносит в sg

}

lptr=NULL; обнуляет lptr

lptr=strtok(sg,""); Чтобы ошибок не было

DELFILE(lptr); Собственная функция

}

//++++++++++++++++REN==================

ptr = strstr(s, "ren "); ищет "ren "

if (strlen(ptr)!=0) { если есть

strcpy(s, ptr); копирут строку в S

int i,vb=-1; char sg[254]; установка переменных

for (i=4;i<strlen(s);i++){ удаляет "ren "

vb++;

sg[vb]=s[i]; заносит в SG

}

lptr=NULL; обнуляет lptr

lptr=strtok(sg,""); Чтобы ошибок не было

//***************************************************

char ff[254],fs[254],*ptr7,ffg[254],fss[254]; устовка переменных

fs[0]='&bsol;0'; fss[0]='&bsol;0'; обнуление

for (i=0;i<strlen(lptr);i++){ Разделение сткоки на два параметра

if (lptr[i]==' ')break; Копирование в ff до пробела

ff[i]=lptr[i];}

strncat(fs,ff,i); Чтобы ошибок не было

ptr7 = strstr(lptr, " "); ишет пробел

for (i=1;i<strlen(ptr7);i++){ Удаляет пробел и копирует в FFG

if (ptr7[i]==' ')break;

ffg[i-1]=ptr7[i];}

strncat(fss,ffg,i); Чтобы ошибок не было

//***************************************************

RENFILE(fs,fss); Собственная функция

}

//++++++++++++++++COPY==================

ptr = strstr(s, "copy "); ешет "copy "

if (strlen(ptr)!=0) { Удаляет "copy "

strcpy(s, ptr); копирут строку в S

int i,vb=-1; char sg[254]; Установка перем

for (i=5;i<strlen(s);i++){ Удаляет copy

vb++;

sg[vb]=s[i]; копирует в SG

}

lptr=NULL; обнуляет lptr

lptr=strtok(sg,""); Чтобы ошибок не было

strcpy(kr,sm); копирует в kr путь без имени файла

strrev(kr); реверс строки

newfil = strstr(kr, "&bsol;"); отрезает до "&bsol;"

strrev(newfil);реверс строки

strlwr(newfil);уменьшает символы

ptr =strstr(lptr,"con "); ишет "con "

if (ptr){ cout<<"&bsol;nNot is function, re-enter"; goto Enter; }

Если есть выводит сообщение

ptr =strstr(lptr,"+"); ишет +

if (ptr){ cout<<"&bsol;nNot is function, re-enter"; goto Enter; }

Если есть выводит сообщение

COPYES(lptr); Собственная функция

}

//++++++++++++++++EXIT==================

ptr = strstr(s, "exit"); ишет "exit"

strcpy(kr,sm); копирует в kr путь без имени файла

strrev(kr); реверс строки

newfil = strstr(kr, "&bsol;"); отрезает до "&bsol;"

strrev(newfil);реверс строки

strlwr(newfil);уменьшает символы

if (strlen(ptr)!=0) exit(EXIT_FAILURE);

если есть то выход программы

goto Enter; на метку

}