- •1. Цель курсовой работы
- •2. Командный процессор ос ms Windows cmd
- •2.1. Оболочка (интерпретатор) командной строки command.Com/cmd.Exe
- •Листинг 1. Процедура инициализации
- •2.3. Структура команд. Параметры и ключи. Вывод справочной информации
- •2.4. Команды
- •2.4.4. Команды Date и Time
- •2.4.7.2. Команда cd
- •2.4.7.3. Команда dir
- •2.4.7.4. Команды mkdir
- •2.4.7.5. Команда del или erase
- •3. Назначение ключей и параметров, описание команд
- •3.1. Команда type
- •Листинг 2. Процедура type
- •3.2. Команда time
- •Листинг 3. Процедура отображения и установки времени
- •3.3. Команда date
- •Листинг 4. Отображение и установка системного времени
- •3.4. Команда mkdir
- •Листинг 5. Процедура mkdir
- •3.5. Команда rd
- •Листинг 6. Процедура rd
- •3.6. Команда cd
- •3.7. Команда attrib
- •Листинг 7. ПроцедураAttrib
- •3.8. Команда cls
- •Листинг 8. Процедура cls
- •3.9. Команда sort
- •Листинг 9. Процедура sort
- •3.10. Команда echo
- •Листинг 10. Процедура echo
- •3.11. Команда del|erase
- •Листинг 11. Процедура del
- •3.12. Команда dir
- •Листинг 12. ПроцедураDir
- •3.13. Команда invertcolor
- •Листинг 13. Процедура invertcolor
- •3.14. Разбиение на лексемы, синтаксический анализ, регулярные выражения
- •Листинг 14. Проверка на соответстиве команд
- •3.15. Процедуры упорядочивания массива (сортировка)
- •3.17. Русификация вывода командного процессора
- •4. Примеры выполнения работы команд
- •4.1. Команда dir
- •4.2. Команда attrib
- •4.3. Команда date и time
- •4.4. Команда type и sort
- •4.5. Команда mkdir, rd, cd
- •4.7. Команда cls и echo
- •4.8. Команда del | erase
- •5. Литература
Листинг 7. ПроцедураAttrib
3.8. Команда cls
Осуществляет очистку экрана, устанавливаются начальные координаты, затем происходит заполнение пробелами от начала экрана до текущей строки и потом курсор возвращается на начало строки, после этого выводится только командная подсказка и курсор:
procedure Cls;
begin
Coord.X := 0;
Coord.Y := 0;
FillConsoleOutputCharacter(ConHandle, ' ', MaxX * MaxY, Coord, NOAW);
GotoXY(0, 0);
end;
Листинг 8. Процедура cls
3.9. Команда sort
Осуществляет сортировку входных данных, ими могут быть как обычная строка введенная с клавиатуры, так и входной файл.
Алгоритм работы процедуры:
1. Если есть ключ справки выводим ее, возвращаемся на начало.
2. Извлекаем путь из строки, в зависимотси от результатов выполняем действия.
3. Определяем ключи.
4. Если нет пути то выводим введенный текст в зависимости от ключей.
5. Если есть путь или парамет то выводим его содержимое в зависимости от ключей.
6. Возвращаемся на начало.
Процедура приведена ниже:
if UpperCase(rg.Match[0]) = 'SORT ' then
begin
rg.Expression := '\/\?';
rg.Exec(tl);
if rg.Match[0] = '/?' then
begin
MyWriteln('SORT [STROKA]'
+#13#10+'Сортировка');
goto g1;
end
else
begin
rg.Expression := '[A-Za-z][:][ \\A-Za-z0-9]*[.A-Za-z0-9]+';
rg.Exec(tl);
if rg.Match[0] <> ''
then
begin
strList := TStringList.Create;
try
strList.LoadFromFile(rg.Match[0]);
except
MyWriteln('Запрашиваемый файл либо каталог не существует');
end;
strList.Sort;
if FindText_v1(' /R',UpperCase(tl))
then
begin
for i := strList.Count-1 downto 0 do
begin
MyWriteln(strList.strings[i]);
end;
end
else
begin
for i := 0 to strList.Count-1 do
begin
MyWriteln(strList.strings[i]);
end;
end;
strList.Free;
end
else
begin
rg.Expression := '[ ]+[ \\A-Za-z0-9]+[.A-Za-z0-9]+';
rg.Exec(trimleft(tl));
if rg.Match[0] <> ''
then
begin
rg2.Exec(rg.Match[0]);
if rg2.Match[0] <> ''
then
begin
strList := TStringList.Create;
try
help := Copy(curpath,1,length(curpath)-1);
if help[Length(help)] <> '\'
then help :=help + rg.Match[0]
else
begin
if trimleft(rg.Match[0][1]) <> '\'
then help :=help + trimleft(rg.Match[0])
else help :=copy(help,1,Length(help)-1) + trimleft(rg.Match[0]);
end;
strList.LoadFromFile(help);
except
MyWriteln('Запрашиваемый файл либо каталог не существует');
end;
strList.Sort;
if FindText_v1(' /R',UpperCase(tl))
then
begin
for i := strList.Count-1 downto 0 do
begin
MyWriteln(strList.strings[i]);
end;
end
else
begin
for i := 0 to strList.Count-1 do
begin
MyWriteln(strList.strings[i]);
end;
end;
strList.Free;
end
else
begin
if Length(Trim(tl)) > 4 then
begin
strList := TStringList.Create;
if FindText_v1(' /R',UpperCase(tl))
then
begin
help := StringReplace(UpperCase(tl),' /R','',[rfReplaceAll]);
help := StringReplace(uppercase(help),'SORT ','',[rfReplaceAll]);
help := StringReplace(help,' ','',[rfReplaceAll]);
for i := 1 to Length(help) do
begin
strList.Add(help[i]);
end;
help := '';
strList.Sort;
for i := strList.Count-1 downto 0 do
begin
MyWriteln(strList.strings[i]);
end;
end
else
begin
help := StringReplace(uppercase(tl),'SORT ','',[rfReplaceAll]);
help := StringReplace(help,' ','',[rfReplaceAll]);
for i := 1 to Length(help) do
begin
strList.Add(help[i]);
end;
help := '';
strList.Sort;
for i := 0 to strList.Count-1 do
begin
MyWriteln(strList.strings[i]);
end;
end;
strList.Free;
end
else
begin
MyWriteln('Не введено параметров для сортировки');
end;
end;
end;
end;
goto g1;