| Волжский университет имени В.Н.Татищева
Факультет “Информатика и телекоммуникации”
Кафедра “Информатика и системы управления”
КУРСОВАЯ РАБОТА
по дисциплине: “Системное программное обеспечение”
Тема:
“Интерпретатор команд MS DOS”
Тольятти
Содержание
ВВЕДЕНИЕ
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1.1 ОПЕРАЦИОННАЯ СИСТЕМА MS DOS
1.1.1 Файлы IO.SYS и MSDOS.SYS
1.1.2 Командный процессор DOS
1.1.3. Базовая система ввода-вывода
1.1.4 Загрузчик DOS
1.1.5 Диалог пользователя с DOS
1.1.6 Команды DOS
1.2 НЕДОСТАТКИ ЯЗЫКА ПРОГРАМИРОВАНИЯ С++
2. ПРОГРАММНАЯ ЧАСТЬ
2.1 ПОСТАНОВКА ЗАДАЧИ
2.2 ПОСТРОЕНИЕ АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ
2.2 АЛГОРИТМ
2.3. ОПИСАНИЕ РАЗРАБОТАННОЙ ПРОГРАММЫ
3. ЗАКЛЮЧЕНИЕ
4. СПИСОК ЛИТЕРАТУРЫ
5. ПРИЛОЖЕНИЕ
MsDos была создана в 1981 г. фирмой Microsoft по заказу IBM для разрабатывающихся тогда компьютеров IBM PC. Компьютер IBM PC, для которого была написана MsDos, был мало похож на современные компьютеры – медленный микропроцессор Intel-8088, 256 Кбайт оперативной памяти, без жёсткого диска, алфавитно-цифровой чёрно-белый монитор, работа лишь с односторонними 160- Кбайтными дискетами и т.д. Однако эти возможности были выше, чем у конкурирующих персональные компьютеры.
Первая версия Ms Dos тоже обладала гораздо более скромными возможностями, чем современные ОС. Она обеспечивала работу на компьютере лишь одного пользователя и одной программы (то есть однопользовательской и однозадачной), поддерживала работу лишь с дискетами, клавиатурной и алфавитно-цифровым дисплеем. Зато Ms Dos была компактной, предъявляла довольно скромные требования к аппаратуре и выполняла необходимый минимум функций для пользователей и программ.
За те два десятка лет, которые прошли с момента появления IBM PC, технические характеристики компьютеров совершили фантастический рывок вперёд. Современные компьютеры превосходят по всем показателям (быстродействию, объему оперативной и дисковой памяти, возможностям монитора и т.д) компьютеры начала 80х годов в сотни и даже тысячи раз. Поэтому фирма Microsoft внесла в MsDos много изменений и добавлений, чтобы расширить её возможности и более эффективно использовать новые, более мощные, компьютеры.
Как наличие автомобилей не отменяет необходимости уметь ходить на своих двоих, так и наличие Windows, Windows 95, Windows NT не ликвидирует (хотя и сильно сокращает) потребности в MS DOS и DOS-программах:
Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз,
а первые результаты появляются уже в течение первых 7 дней.
Зарегистрироваться и Начать продвижение
· до сих пор остаётся множество областей деятельности, где DOS-программы успешно работают, а применение решений, требующих иных ОС, невозможно или экономически не целесообразно;
· при повреждении таких ОС, как WINDOWS 3.1, WINDOWS for Workgroup и Windows 95 (что случается весьма часто) для исследования причин неисправности и их устранения обычно приходится использовать MS DOS и DOS-программы.
Операционная система MSDOS в наше время не используется как основная ОС, но без неё не обойдешься. При установке Windows используют команды MSDOS. В курсовой работе я интерпретирую эти команды.
Файлы IO.SYS и MSDOS.SYS, иначе называемые основными системными файлами
MS DOS, содержат программы MSDOS, которые постоянно находятся в оперативной памяти компьютера.
1.1.2 Командный процессор DOS
Командный процессор DOS Обрабатывает команды, вводимые пользователем. Стандартный командный процессор MS DOS имеет имя COMMAND.COM, обычно он находится в корневом каталоге диска, с которого загружается DOS. Некоторые команды пользователя, TYPE,DIR,COPY, командный процессор выполняет сам. Такие команды называются внутренними. Для выполнения остальных (внешних) команд пользователя командный процессор ищет на дисках программу с соответствующим именем и если находит её, то загружает в память и передаёт ей управление. По окончании работы программы командный процессор удаляет программу из памяти и выводит сообщение о готовности к выполнению команд.
1.1.3 Базовая система ввода-вывода
Базовая система ввода-вывода (BIOS), находящаяся в постоянной памяти (постоянно запоминающем устройстве, ПЗУ) компьютера, формально не является частью MS DOS, однако тесно с ней связана. BIOS содержит программы для проверки оборудования компьютера, инициирования загрузки операционной системы (ОС) и программы для выполнения базовых (низкоуровневых) операций ввода-вывода с монитором, клавиатурой, дисками и принтером.
Ещё одна программа, которую можно считать частью DOS,- это загрузчик DOS. Он находится в первом секторе каждой дискеты и в первом секторе логического диска, с которого происходит загрузка DOS (то есть диска С:). Название этой очень короткой программы- загрузка в память системного файла DOS IO.SYS при начальной загрузке компьютера.
1.1.5 Диалог пользователя с DOS
Диалог пользователя с DOS осуществляется в форме команд-строк символов, вводимых с клавиатуры. Каждая команда пользователя означает, что DOS должна выполнить то или иное действие, например, напечатать файл или выдать на экран оглавление каталога.
Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:
— Разгрузит мастера, специалиста или компанию;
— Позволит гибко управлять расписанием и загрузкой;
— Разошлет оповещения о новых услугах или акциях;
— Позволит принять оплату на карту/кошелек/счет;
— Позволит записываться на групповые и персональные посещения;
— Поможет получить от клиента отзывы о визите к вам;
— Включает в себя сервис чаевых.
Для новых пользователей первый месяц бесплатно.
Зарегистрироваться в сервисе
Команды DOS состоит из имени команды или вызываемой программы и, возможно, параметров, разделённых пробелами. Ввод каждой команды заканчивается нажатием клавиши ENTER.
1.1.6 Команды DOS
Любая команда, вводимая пользователем в MS DOS, вызывает выполнение либо внутренней команды (из COMMAND.COM) либо какой-либо программы или командного файла.
Команды DOS состоят из имени команды и, возможно, параметров разделённых пробелами. Имя команды и параметры могут набираться как прописными, так и строчными латинскими буквами. Ниже полностью описаны три команды DEL,REN,COPY, подробная характеристика, примеры правильного написания для работы с ними. Моя программа интерпретирует их с небольшими изменениями.
· Для удаления файлов в DOS имеется команда DEL
.Формат команды:
DEL Имя файла
В имени файла можно употреблять символы * и ?.
Примеры
:
DEL *.bak
–удаление всех файлов с расширением bak из текущего каталога.
DEL my.txt
- удаление файла my.txt из текущего каталога.
· Для переименования файлов в DOS имеется команда REN
. Формат команды:
REN имя-файла1 имя-файла2
Параметры.
Параметр имя-файла1 задает имя переименуемого файла, параметр имя-файла2 –новое имя файла.
Примеры:
REN xxx.doc xxx.txt
–переименование файла ххх.doc в текущем каталоге. Новое имя файла xxx.txt.
· Для переименования файлов в DOS имеется команда COPY
. Формат команды:
COPY имя-файла1 имя-файла2
В имени файла можно употреблять символы * и ?, а также указывать имя диска и каталога.
Выполнение команд.
Если в параметре имя-файла1 указанно имя каталога, то файлы копируются из этого каталога в, иначе – из текущего каталога. Каталог, в котором копируются файлы, можно задать параметром имя-файла2 или указанием каталога в параметре имя-файла2. Если этот каталог не задан, то файлы копируются в текущий каталог.
Если во втором параметре команды задано имя файла, то оно указывает новое имя копируемого файла. Символы * и ? в имени файла во втором параметре команды указывают, что соответствующие символы в именах копируемых файлов при копировании не меняются.
Примеры:
COPY xxx.doc xxx.txt
–копирование файла ххх.doc в текущем каталоге; создаётся файл xxx.txt в текущем каталоге.
COPY a:\*.* - копирование всех файлов из корневого каталога диска а: в текущий каталог.
COPY a:\*.* d: -- копирование всех файлов из корневого каталога диска а: в текущий каталог диска D:.
COPY \t\*.doc c:\*.txt - копирование всех файлов с расширением.doc из каталога \t текущего диска в текущий каталог диска с:. Файлы получают расширение txt.
Если файл с таким же именем, как у копии, создаваемой командой COPY, уже существует, то он замещается без каких либо предупреждений.
1.2
Особенности языка програмирования С++
С++ программно независимый язык. На языке С++ пишутся операционные системы, различные программы и т.д. При написании своей программы я столкнулся с одной проблемой - это работа со строками, чтобы выполнить определённую задачу мне приходилось добавлять в программу ещё несколько или больше функций для устранения ошибок. Например:
for (i=0;i<strlen(lptr);i++){ Разделение сткоки на два параметра
if (lptr[i]==' ')break; Копирование в ff до пробела
ff[i]=lptr[i];}
strncat(fs,ff,i);
В ff копируется посимвольно строка размером i, но при просмотре новой строки оказывалось символов не i, а в несколько раз больше, приходилось использовать strncat,
она вырезает не нужные символы. И так почти на каждом шагу были проблема. Это мои первые замечания по ошибкам, возможно их прибавится.
2.1 Постановка задачи
Перед началом выполнения данной курсовой работы я поставил для себя целью изучить принципы работы с файлами в операционной системе DOS, команды, позволяющие работать с файлами, а также функции и системные вызовы языка С++, позволяющие копирование, удаление, переименование файлов, работа с командной строкой. В данной работе я постаралась наиболее подробно изучить операционную систему DOS в программируемой части и частично других операционных систем, получить практические навыки работы с операционной системой DOS. В курсовой работе я буду создавать и описывать программу, которая позволит работать с файлами, а именно, копировать, переименовывать и удалять. Данная программа в дальнейшем может быть использована студентами для изучения работы с файлами на лабораторных занятиях по изучению теоретического материала и приобретения практических навыков по дисциплине «Системное Программное Обеспечение», а также программа может быть использована в работе с операционной системой MS DOS.
2.2 Построение алгоритма решения задачи
Алгоритм решения поставленной задачи, выполненный с помощью графического метода изображения алгоритмов – блок-схемой представлен ниже.
Для реализации моей задачи используется следующий алгоритм (рисунок 1.).
Описание алгоритма:
1. Ввод команды с клавиатуры
2. Индификация вводимой команды
3. Операции над параметрами команды
4. Выполнение команды


Рис. 1. Алгоритм программы.
Моя программа интерпретирует команды MS DOS
В программе можно пользоваться четырьмя командами:
1) Exit- программа завершается.
2) Copy – копирование файла или файлов.
3) Ren –переименование файла.
4) Del –Удаление файла.
В программе я использую встроенные библиотеки С++. Таб. 1
В основном программа работает со строковыми функциями. Эти функции нужны для обработки строк с клавиатуры, для устранения ошибок С++.
· strtok –для устранения ошибок в строке
· strncat -копирует определённое количество символов в переменную.
· strstr - для поиска слова в строке.
· strcpy –копирует строку в переменную.
· strcat –добавляет строку в переменную.
· Strrev- реверсирует строку.
· Strlen- определяет количество символов в строке
· Strlwr-все символы преобразовывает в строчные.
· Strpbrk- ищет определённые символы.
Почти в любой программе не обойдешься без собственных функций, они упрощают программирование, программа становится более понятна и удобна в изучении. В моей программе я использую шесть своих функций FILCOP, GAD, GIP, DELFILE, RENFILE, COPYES.
· Filcop - функция для копирования файлов.
· Gad – функция для выреза одного пути без имени файла из строки.
· Gip – функция для выреза одного имени файла из строки.
· Delete- функция удаления файлов.
· Renfile- функция переименования файлов.
· Copyes- функция обрабатывающая строку и вызова функции Filcop. Она разделяет строку на два параметра копирования- какой файл и куда копировать с учётов шаблонов (*?).
После загрузки программы появится меню с приглашением «>>>>
». Теперь можно вводить команды. После ввода команды программа определяет её.
Если:
· EXIT - программа завершается.
· REN –оставляет в введённой строке только два параметра (какой файл, на какой переименовывать) и вызывает функцию Renfile.
· Copy- оставляет в введённой строке только два параметра (какой файл, куда копировать и что), вызывает функцию Copyes.
· Del- оставляет в введённой строке только один параметр (какой файл) и вызывает функцию Delete.
В программе в основном я работаю со строковыми переменными и функциями для вырезания путей с файлами, путей, и т.д. Это всё нужно, чтобы использовать шаблоны в некоторых командах (Copy,delete).
| Название библиотеки
|
Описание функции
|
| Stdlib.h
|
Преобразование данных, генерирование случайных чисел, получение и установка переменных среды SHELL
|
| Time.h
|
Организация имитационного процесса системного времени
|
| Iostream.h
|
Потоки ввода \ вывода
|
| Conio.h
|
Прототип функции задержки
|
| Stdio.h
|
Обозначение потоковых файлов
|
| Sys\stat.h
|
Системные вызовы для работы с файлами
|
| Sys\types.h
|
Системные вызовы для работы с файлами
|
| Fstream.h
|
Операции ввода \ вывода в файлах
|
| String.h
|
Обработка строк
|
| Fcntl.h
|
Флаги
|
| Io.h
|
Организация ввода \ вывода
|
| Math.h
|
Использование математических функций
|
Таблица 1. Библиотеки C++.
В данной курсовой работе были рассмотрены команды MS DOS, позволяющие копировать, удалять, переименовывать файлы. А также функции и системные вызовы языка С++, позволяющие организовывать копирование, удаление файлов и т.д. Данная работа позволила мне более углубленно изучить работу с строковыми функциями, различные тонкости языка и увидеть недостатки С++. В курсовой работе была создана и описана программа, позволяющая работать с файлами в среде MS DOS. Данная программа может быть использована студентами для изучения работы с файлами в среде MS DOS и частично с UNIX, на лабораторных занятиях по изучению теоретического материала и приобретения практических навыков по дисциплине «Системное Программное Обеспечение».
4. СПИСОК ЛИТЕРАТУРЫ
1) Герхард Франкен, Сергей Молявко MS DOS для пользователя.- Киев, 1993.
2) С. Краковяк Основы организации и функционирования ОС ЭВМ.- М.: Мир, 1998.
3) С. Кейслер Проектирование операционных систем для малых ЭВМ. - М.: Мир, 1996.
4) Э. Немет, Г. Снайдер Unix. Руководство системного администратора. - Киев.: BHV, 1997.
5) Дегтярев Е.К. Введение в Unix.- М.: Память, 1992.
6) Свиридов С.В. Системные вызовы ОС UNIX.-М.:Память, 1992.
7) Дунаев С. UNIX-сервер. Настройка, конфигурирование, работа в операционной среде, Internet-возможности: в 2-х томах.Том 1.-М.:Диалог -МИФИ, 1999.
8) Дунаев С. UNIX-сервер. Настройка, конфигурирование, работа в операционной среде, Internet-возможности: в 2-х томах.Том 2.-М.:Диалог -МИФИ, 1999.
9) Шамер Л., Негус К. UNIX (серия «Без проблем»):Пер. с англ. -М.:Бином, 1998.
10) Кейлингерт П. Элементы операционных систем. Введение для пользователей. Пер. с англ.-М.:Мир,1995.
11) Персон Р. Windows 95 в подлиннике. Пер. с англ.-СПБ:BHV-Санкт -Петербург, 1996.
5. Приложение
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <dir.h>
//Процедура для копирования файла
//FILCOP----------------------------------------------------------------------
int FILCOP(char *sd,char *sf)
{
FILE *in, *out;
in = fopen(sd, "r"); открывает фаил и копирует в буфер содержимое
out = fopen(sf, "w"); открывает или создаёт фаил
while (!feof(in))
fputc(getc(in), out); заполняет новый фаил
fclose(in); fclose(out); закрывает фаил
return(0); возрашет функции значение 0
}
Функция для создания полного пути
//ANY----------------------------------------------------------------------
char *GAD(char *sm, char *namf)
{ char *zzx,kr[254],*newfil; kr[0]='\0'; устанавливаем переменые
zzx=strpbrk(sm,"\\"); ишет "\"
if (zzx) { если есть
strcpy(kr,sm); копирует в kr путь без имени файла
strrev(kr); реверс строки
newfil = strstr(kr, "\\"); отрезает до "\"
strrev(newfil); реверс строки
strcat(newfil,namf); добовляет имя файла в путь
strlwr(newfil); уменьшает символы
return newfil;
}
else return namf;
}
Функция для вырезки только путя
//ANY55----------------------------------------------------------------------
char *GIP(char *sm)
{ char *zzx,kr[254],*newfil; kr[0]='\0'; устанавливаем переменые
zzx=strpbrk(sm,"\\"); ишет "\"
if (zzx) { если есть
strcpy(kr,sm); копирует в kr путь без имени файла
strrev(kr); реверс строки
newfil = strstr(kr, "\\"); отрезает до "\"
strrev(newfil);реверс строки
strlwr(newfil);уменьшает символы
return newfil;
} else return sm;
}
Удаление фаил (а,ов)
//DELFILE----------------------------------------------------------------------
DELFILE(char *sm)
{ //char *newfil, kr[254]; устанавливаем переменые
struct ffblk ffblk; Структура о файле
int done;
done = findfirst(sm,&ffblk,0); ишет файлы
if (done==-1) cout<<"\nError"; если путь неправельный- ошибка
while (!done) ишет пока не кончатся файлы
{
if (remove(GAD(sm,ffblk.ff_name)) == 0) удаление файла
cout<<"\n Delete 1 files"; вывод на экран текста
else
cout<<"\n File do not delete "; вывод на экран текста
done = findnext(&ffblk); следующий файл
}
return (0);
}
Переименование фаила
//RENAME----------------------------------------------------------------------
RENFILE(char *sm,char *nm)
{
strcpy(kr,sm); копирует в kr путь без имени файла
strrev(kr); реверс строки
newfil = strstr(kr, "\\"); отрезает до "\"
strrev(newfil);реверс строки
strlwr(newfil);уменьшает символы
if (rename(sm, nm) == 0) Фу Переименование фаила
cout<<"File renamed"; вывод на экран текста
else
cout<<"File do not renamed"; вывод на экран текста
return (0);
}
//COPY----------------------------------------------------------------------
COPYES(char *sm)
{
char *nnj,zt[254],zt2[254]; int ji=0,jiz=0; установка перемен
//ON>>>>TWO************************************************
char ff[254],fs[254],*ptr7,ffg[254],fss[254]; fs[0]='\0'; fss[0]='\0'; установка перемен
strcpy(kr,sm); копирует в kr путь без имени файла
strrev(kr); реверс строки
newfil = strstr(kr, "\\"); отрезает до "\"
strrev(newfil);реверс строки
strlwr(newfil);уменьшает символы
Разделяем строку два параметра на первый
for (int i=0;i<strlen(sm);i++){ if (sm[i]==' ')break; ff[i]=sm[i];}
strncat(fs,ff,i); ptr7 = strstr(sm, " "); Чтобы ошибок небыло
Разделяем строку два параметра на первый
for (i=1;i<strlen(ptr7);i++){ if (ptr7[i]==' ')break; ffg[i-1]=ptr7[i];}
strncat(fss,ffg,i-1); Чтобы ошибок небыло
//******************************************************
char nbb[254]; уст перемен
Если есть *
if (strpbrk(fss,"*")){
strrev(fss); nbb[0]='\0'; реверс FSS
for (int q=0;q<strlen(fss);q++){ Разделение на путь и фаил
if (fss[q]!='\\') nbb[q]=fss[q];else break; } копируем в NBB путь
strrev(fss);strrev(nbb); Реверсы
//cout<<"\n REEEEE--- "<<nbb;
}
//____________________________________________________________
char dt[254],dt2[254]; dt[0]='\0'; dt2[0]='\0'; int fll=0,ii=-2; уст перемен
Разделяем строку фаил на наз и расширение
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<<"\n REEEEE111--- "<<dt;
//cout<<"\n REEEEE222--- "<<dt2;
//---------------------------------------------------------------------------
struct ffblk ffblk; Структура о файле
int done;
done = findfirst(fs,&ffblk,0); ишет фаилы
if (done==-1) cout<<"\nError"; если нет то ошибка
while (!done) начало поиска
{
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
zt[0]='\0'; zt2[0]='\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]='\0'; zt2[jiz-1]='\0'; char *rrr; rrr=NULL; Обнулить перем
char *path2,bpn[254]; установка перем
path2=GIP(fss); Обработка моей функции
bpn[0]='\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, "\\"); отрезает до "\"
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<<"\n>>>"; вывод на экран текста
gets(s); strlwr(s); чтение с клавиатуры и уменшение символов
//++++++++++++++++DEL==================
strcpy(kr,sm); копирует в kr путь без имени файла
strrev(kr); реверс строки
newfil = strstr(kr, "\\"); отрезает до "\"
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]='\0'; fss[0]='\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, "\\"); отрезает до "\"
strrev(newfil);реверс строки
strlwr(newfil);уменьшает символы
ptr =strstr(lptr,"con "); ишет "con "
if (ptr){ cout<<"\nNot is function, re-enter"; goto Enter; }
Если есть выводит сообщение
ptr =strstr(lptr,"+"); ишет +
if (ptr){ cout<<"\nNot is function, re-enter"; goto Enter; }
Если есть выводит сообщение
COPYES(lptr); Собственная функция
}
//++++++++++++++++EXIT==================
ptr = strstr(s, "exit"); ишет "exit"
strcpy(kr,sm); копирует в kr путь без имени файла
strrev(kr); реверс строки
newfil = strstr(kr, "\\"); отрезает до "\"
strrev(newfil);реверс строки
strlwr(newfil);уменьшает символы
if (strlen(ptr)!=0) exit(EXIT_FAILURE);
если есть то выход программы
goto Enter; на метку
}
|