Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Obrazets.doc
Скачиваний:
21
Добавлен:
10.06.2015
Размер:
3.99 Mб
Скачать

Листинг 4. Отображение и установка системного времени

3.4. Команда mkdir

Данная команда создает каталог, даже если промежуточные каталоги не существуют, система автоматически производит постройку маршрута до создаваемо папки, так же введена возможность создание нескольких папок одновременно в текущем каталоге если они указаны через пробелы.

Алгоритм работы процедуры:

1. Если есть ключ справки выводим ее, возвращаемся на начало.

2. Извлекаем путь или названия папок из строки.

3. Проверяем есть ли установленные ключи.

4. В зависимости от ключей производим действия.

5. Создаем каталог/каталоги.

6. Возвращаемся на начало.

Далее представлен листинг процедуры создания каталога.

if UpperCase (rg.Match[0]) = 'MKDIR ' then

begin

rg.Expression := '\/\?';

rg.Exec(tl);

if rg.Match[0] = '/?' then

begin

MyWriteln('MKDIR [DISK:][PATH:]'

+#13#10+'Создает дирректории даже в том случае если нет промежуточных дирректорий');

goto g1;

end

else

begin

rg.Expression := '[A-Za-z][:][ \\A-Za-z0-9]*';

rg.Exec(tl);

if rg.Match[0] <> ''

then

begin

ForceDirectories(rg.Match[0]);

end

else

begin

rg.Expression := '[ ]+[ \\A-Za-z0-9]+';

rg.Exec(trimleft(tl));

if rg.Match[0] <> ''

then

begin

help := copy(curpath,1,length(curpath)-1);

if help[Length(help)] <> '\'

then help:=help+trimleft(rg.Match[0])

else

begin

if (rg.Match[0][2])<>'\'

then

begin

help := '';

for i := 2 to Length((rg.Match[0])) do

begin

if ((rg.Match[0][i]) = ' ') OR (i = Length((rg.Match[0])))

then

begin

if i = Length(rg.Match[0])

then help := help + rg.Match[0][i];

help:=copy(curpath,1,length(curpath)-2)+'\'+help;

ForceDirectories(help);

help := '';

end

else help := help + (rg.Match[0][i]);

end;

goto g1;

end

else help:=copy(help,1,length(help)-1)+trimleft(rg.Match[0]);

end;

ForceDirectories(help);

goto g1;

end;

end;

end;

goto g1;

end;

Листинг 5. Процедура mkdir

3.5. Команда rd

Данная команда производит удаление папки и всего что в ней находится,

в ней используется два ключа /Q и /S:

-Ключ /Q предназначен для для отключения подтверждения на удаление каталога и всего его содержимого при включенном /S, его можно не включать если вы не собираетесь включать подтверждение на удаление каталога;

-Ключ /S предназначен для включения подтверждения удаления каталога и всего его содержимого;

Алгоритм работы процедуры:

1. Если есть ключ справки выводим ее, возвращаемся на начало.

2. Извлекаем путь или названия папок из строки.

3. Проверяем есть ли такая папка.

4. В зависимости от ключей производим действия.

5. Удаляем каталог/каталоги.

6. Возвращаемся на начало.

Далее приведена процедура удаления каталога и всего содержимого с различными ключами:

if UpperCase (rg.Match[0]) = 'RD ' then

begin

rg.Expression := '\/\?';

rg.Exec(tl);

if rg.Match[0] = '/?' then

begin

MyWriteln('RD [DISK:][PATH:][/S][/Q]'

+#13#10+'/S выводит подтверждение на удалени каталогов'

+#13#10+'/Q отключает вывод подтверждения при включенном /S'

+#13#10+'Удаляет дирректории');

goto g1;

end

else

begin

rg.Expression := '[A-Za-z][:][ \\A-Za-z0-9]*';

rg.Exec(tl);

if rg.Match[0] <> ''

then

begin

if FindText_v1 (' /Q',UpperCase(tl))

then

begin

RemoveAll(trim(rg.Match[0]));

goto g1;

end

else

begin

if FindText_v1 (' /S',UpperCase(tl))

then

begin

MyWriteln('Вы действительно хотите удалить все входящие в этот'+#13#10+

' каталог файлы и папки Y/N');

Readln;

Readln(tl);

if Trim(UpperCase(tl)) = 'Y'

then

begin

RemoveAll(trim(rg.Match[0]));

MyWriteln('Для продолжения раоты нажмити <ENTER>');

goto g1;

end;

end

else

begin

RemoveAll(trim(rg.Match[0]));

goto g1;

end;

end;

end

else

begin

rg.Expression := '[ ]+[ \\A-Za-z0-9]+';

rg.Exec(trimleft(tl));

if rg.Match[0] <> ''

then

begin

help := copy(curpath,1,length(curpath)-1);

if help[Length(help)] <> '\'

then help:=help+trimleft(rg.Match[0])

else

begin

if (rg.Match[0][2])<>'\'

then

begin

help := '';

for i := 2 to Length((rg.Match[0])) do

begin

if ((rg.Match[0][i]) = ' ') OR (i = Length((rg.Match[0])))

then

begin

if i = Length(rg.Match[0])

then help := help + rg.Match[0][i];

help:=copy(curpath,1,length(curpath)-2)+'\'+help;

if FindText_v1 (' /Q',UpperCase(tl))

then

begin

RemoveAll(trim(help));

end

else

begin

if FindText_v1 (' /S',UpperCase(tl))

then

begin

MyWriteln('Вы действительно хотите удалить все входящие в этот'+#13#10+

' каталог файлы и папки Y/N');

Readln;

Readln(tl);

if Trim(UpperCase(tl)) = 'Y'

then

begin

RemoveAll(trim(help));

MyWriteln('Для продолжения раоты нажмити <ENTER>');

end;

end

else

begin

RemoveAll(trim(help));

end;

end;

help := '';

end

else help := help + (rg.Match[0][i]);

end;

goto g1;

end

else help:=copy(help,1,length(help)-1)+trimleft(rg.Match[0]);

end;

if FindText_v1 (' /Q',UpperCase(tl))

then

begin

RemoveAll(trim(help));

goto g1;

end

else

begin

if FindText_v1 (' /S',UpperCase(tl))

then

begin

MyWriteln('Вы действительно хотите удалить все входящие в этот'+#13#10+

' каталог файлы и папки Y/N');

Readln;

Readln(tl);

if Trim(UpperCase(tl)) = 'Y'

then

begin

RemoveAll(trim(help));

MyWriteln('Для продолжения раоты нажмити <ENTER>');

goto g1;

end;

end

else

begin

RemoveAll(trim(help));

goto g1;

end;

end;

goto g1;

end;

end;

end;

goto g1;

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]