Волзький університет імені В. Н. Татіщева
Факультет "Інформатика і телекомунікації"
Кафедра "Інформатика та системи управління"
Курсова робота
з дисципліни: "Системне програмне забезпечення"
Тема:
"Інтерпретатор команд 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-програмах:
до цих пір залишається багато областей діяльності, де DOS-програми успішно працюють, а застосування рішень, що вимагають інших ОС, неможливо або економічно не доцільно;
при пошкодженні таких ОС, як WINDOWS 3.1, WINDOWS for Workgroup і Windows 95 (що трапляється дуже часто) для дослідження причин несправності та їх усунення зазвичай доводиться використовувати MS DOS і DOS-програми.
Операційна система MSDOS в наш час не використовується як основна ОС, але без неї не обійдешся. При установці Windows використовують команди MSDOS. У курсовій роботі я інтерпретую ці команди.
1. Теоретична частина
Операційна система MS DOS
Файли IO.SYS і MSDOS.SYS
Файли 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 містить програми для перевірки обладнання комп'ютера, ініціювання завантаження операційної системи (ОС) і програми для виконання базових (низькорівневих) операцій введення-виведення з монітором, клавіатурою, дисками і принтером.
1.1.4 Завантажувач DOS
Ще одна програма, яку можна вважати частиною DOS, - це завантажувач DOS. Він знаходиться в першому секторі кожної дискети і в першому секторі логічного диска, з якого відбувається завантаження DOS (тобто диска С:). Назва цієї дуже короткої програми, щоб завантажити в пам'ять системного файлу DOS IO.SYS при початковому завантаженні комп'ютера.
1.1.5 Діалог користувача з DOS
Діалог користувача з DOS здійснюється у формі команд-рядків символів, що вводяться з клавіатури. Кожна команда користувача означає, що DOS повинна виконати ту чи іншу дію, наприклад, надрукувати файл або видати на екран зміст каталогу.
Команди 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. Програмна частина
2.1 Постановка завдання
Перед початком виконання даної курсової роботи я поставив для себе мету вивчити принципи роботи з файлами в операційній системі DOS, команди, що дозволяють працювати з файлами, а також функції та системні виклики мови С + +, що дозволяють копіювання, видалення, перейменування файлів, робота з командним рядком. У даній роботі я постаралася найбільш докладно вивчити операційну систему DOS в програмованої частини і частково інших операційних систем, отримати практичні навики роботи з операційною системою DOS. У курсовій роботі я буду створювати і описувати програму, яка дозволить працювати з файлами, а саме, копіювати, перейменовувати і видаляти. Дана програма в подальшому може бути використана студентами для вивчення роботи з файлами на лабораторних заняттях з вивчення теоретичного матеріалу і придбання практичних навичок з дисципліни «Системне Програмне Забезпечення», а також програма може бути використана в роботі з операційною системою MS DOS.
2.2 Побудова алгоритму розв'язання задачі
Алгоритм вирішення поставленого завдання, виконаний за допомогою графічного методу зображення алгоритмів - блок-схемою представлений нижче.
Алгоритм програми
Для реалізації мого завдання використовується наступний алгоритм (малюнок 1.).
Опис алгоритму:
Введення команди з клавіатури
Індіфікація введеної команди
Операції над параметрами команди
Виконання команди
Рис. 1. Алгоритм програми.
2.3 Опис розробленої програми
Моя програма інтерпретує команди MS DOS
У програмі можна користуватися чотирма командами:
Exit-програма завершується.
Copy - копіювання файлу або файлів.
Ren-перейменування файлу.
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.
Герхард Франкен, Сергій Молявко MS DOS для користувача .- Київ, 1993.
С. Краков'як Основи організації та функціонування ОС ЕОМ .- М.: Світ, 1998.
С. Кейслер Проектування операційних систем для малих ЕОМ. - М.: Світ, 1996.
Е. Немет, Г. Снайдер Unix. Керівництво системного адміністратора. - Київ.: BHV, 1997.
Дегтярьов Є.К. Введення в Unix .- М.: Пам'ять, 1992.
Свиридов С.В. Системні виклики ОС UNIX.-М.: Пам'ять, 1992.
Дунаєв С. UNIX-сервер. Налаштування, конфігурування, робота в операційному середовищі, Internet-можливості: у 2-х томах.Том 1.-М.: Діалог-МІФІ, 1999.
Дунаєв С. UNIX-сервер. Налаштування, конфігурування, робота в операційному середовищі, Internet-можливості: у 2-х томах.Том 2.-М.: Діалог-МІФІ, 1999.
Шамер Л., Негус К. UNIX (серія «Без проблем»): Пер. з англ. -М.: Біном, 1998.
Кейлінгерт П. Елементи операційних систем. Запровадження для користувачів. Пер. з англ.-М.: Світ, 1995.
Персон Р. Windows 95 в оригіналі. Пер. з англ.-СПБ: BHV-Санкт-Петербург, 1996.
У програмі в основному я працюю із строковими змінними і функціями для вирізування шляхів з файлами, шляхів, і т.д. Це все потрібно, щоб використовувати шаблони в деяких командах (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 + +.
3. Висновок
У цій роботі були розглянуті команди MS DOS, дозволяють копіювати, видаляти, перейменовувати файли. А також функції та системні виклики мови С + +, щоб організовувати копіювання, видалення файлів і т.д. Ця робота дозволила мені більш поглиблено вивчити роботу з рядковими функціями, різні тонкощі мови і побачити недоліки С + +. У курсовій роботі була створена і описана програма, що дозволяє працювати з файлами у середовищі MS DOS. Дана програма може бути використана студентами для вивчення роботи з файлами в середовищі MS DOS і частково з UNIX, на лабораторних заняттях з вивчення теоретичного матеріалу і придбання практичних навичок з дисципліни «Системне Програмне Забезпечення».
4. СПИСОК ЛІТЕРАТУРИ
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; на мітку
}