- •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. Литература
Листинг 6. Процедура rd
3.6. Команда cd
Данная команда позволяет сменить текущий каталог.
1. Если есть ключ справки выводим ее, возвращаемся на начало.
2. Извлекаем путь или названия папок из строки.
3. Меняем текущий каталог
4. Возвращаемся на начало.
Далее представлен листинг процедуры смены каталога:
if UpperCase (rg.Match[0]) = 'CD ' then
begin
rg.Expression := '\/\?';
rg.Exec(tl);
if rg.Match[0] = '/?' then
begin
MyWriteln('CD [DISK:][PATH]'
+#13#10+'Смена дирректории');
end
else
begin
if Length(Trim(tl)) = Length(Trim('CD')) then
begin
MyWriteln('Не указан каталог для смены');
goto g1;
end;
rg.Expression := '[A-Za-z][:][\\A-Za-z0-9]*';
rg.Exec(tl);
if rg.Match[0] <> ''
then
begin
if DirectoryExists(rg.Match[0])
then
begin
if rg.Match[0][Length(rg.Match[0])] <> '\'
then curpath := rg.Match[0]+'\>'
else curpath := rg.Match[0]+'>';
end
else
begin
MyWriteln('Данного каталога не существует, неправильно указан путь');
goto g1;
end;
goto g1;
end
else
begin
rg.Expression := '[ ]+[ \\A-Za-z0-9]+';
rg.Exec(trimleft(tl));
if rg.Match[0] <> ''
then
begin
help := '';
if rg.Match[0][Length(rg.Match[0])] <> '\'
then help := Copy(curpath,1,length(curpath)-1)+trimleft(rg.Match[0])
else help := Copy(curpath,1,length(curpath)-2)+trimleft(rg.Match[0]);
if DirectoryExists(help)
then
begin
if help[Length(help)] <> '\'
then curpath := help+'\>'
else curpath := help+'>';
end
else
begin
MyWriteln('Данного каталога не существует, неправильно указан путь');
goto g1;
end;
end
else
begin
if FindText_v1(' \[\.\.\]',tl)
then
begin
help := '';
if Length(curpath) = 4
then
begin
MyWriteln('Нельзя перейти на уровень выше от текущего корня');
goto g1;
end;
for i := Length (Copy(curpath,1,Length(curpath)-2)) downto 1 do
begin
if Copy(curpath,1,Length(curpath)-2)[i] = '\'
then
begin
help:= String_Reverse(help+Copy(curpath,1,Length(curpath)-2)[i]);
curpath:= StringReplace(curpath,help,'',[rfReplaceAll]);
goto g1;
end
else
begin
help := help + Copy(curpath,1,Length(curpath)-2)[i];
end;
end;
end;
end;
goto g1;
end;
end;
goto g1;
end;