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

Листинг 9. Процедура sort

3.10. Команда echo

Предназначенная для отображения строки текста. Команда echo - выводит текст (выводит текст на стандартное устройство вывода):

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

begin

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

rg.Exec(tl);

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

begin

MyWriteln('ECHO [SOOBSHENIE]'

+#13#10+'Задает отображение вывода, выводит сообщение');

goto g1;

end

else

begin

rg.Expression := ' OFF';

rg.Exec(UpperCase(tl));

if rg.Match[0] <> ''

then echo := False

else

begin

if length(Trim(tl)) > 4

then

begin

rg.Expression := ' ON';

rg.Exec(UpperCase(tl));

if rg.Match[0] = ''

then MyWriteln(Copy(TL,6,Length(TL)))

else

begin

MyWriteln('ECHO ON');

echo := True;

end;

end

else

begin

MyWriteln('ECHO ON');

echo := True;

end;

end;

end;

goto g1;

end;

Листинг 10. Процедура echo

3.11. Команда del|erase

Данные команды производят удаление фалов с различными ключами.

-/P предназначен для включения подтверждения перед удалением фалов;

-/F предназначен для включения принудительного удаления файлов с атрибутом только для чтения;

-/S предназначен для включения удаления файла из всех подкаталогов;

-/Q предназначен для игнорирования подтверждения удаления файлов;

Алгоритм команды представляет из себя следующие шаги:

1. Проверяем существует ли каталог, файл на диске и в подпапках;

2. Определяем тип объекта(файл, каталог);

3. В зависимости от типа объекта выполняем действия с объектом;

4. Если папка то удаляем все что расположено в ней в зависимости от установленных ключей;

5. Если файл то удаляем все файлы в подкаталогах в зависимости от установленных ключей;

6. Возвращаемся по метке в начало работы;

Далее приведена процедура для удаления файла, так как команды DEL и ERASE соответствуют друг другу я привожу одну из них:

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

begin

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

rg.Exec(tl);

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

begin

MyWriteln('DEL [DISK:][PATH:][FILE:]'

+#13#10+'Удаляет файл'

+#13#10+'/P'+'запрос перед каждым удалением файла'

+#13#10+'/F'+'принудительное удаление файло только для чтения'

+#13#10+'/S'+'удаление файлов из всех подкаталогов'

+#13#10+'/Q'+'отключение запроса на удаление файла'

+#13#10+'/A:R'+'удалять файлы с параметром только для чтения'

+#13#10+'/A:H'+'удалять файлы с параметром скрытый'

+#13#10+'/A:S'+'удалять файлы с параметром системный'

+#13#10+'/A:A'+'удалять файлы с параметром фрхивный');

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

exist := 0;

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

ExistsDelA(stringreplace(trim(help),'\'+GetFileNameWE(trim(help)),'\',[]),GetFileNameWE(trim(help)));

case exist of

0: begin

MyWriteln('Объект не существует');

end;

1: begin//папка

if pos(' /P',uppercase(tl)) <> 0

then

begin

if pos(' /Q',uppercase(tl)) <> 0

then

begin

if pos(' /F',uppercase(tl)) <> 0

then

begin

RemoveAllRA(help,1);

ForceDirectories(trim(help));

end

else

begin

RemoveAllRA(help,0);

ForceDirectories(trim(help));

end;

goto g1;

end

else

begin

MyWriteln('Вы точно хотите удалить все папки и файлы? y/n');

Readln;

Readln(tl);

if trim(uppercase(tl)) = 'Y'

then

begin

if pos(' /F',uppercase(tl)) <> 0

then

begin

RemoveAllRA(help,1);

ForceDirectories(trim(help));

end

else

begin

RemoveAllRA(help,0);

ForceDirectories(trim(help));

end;

goto g1;

end

else goto g1;

end;

end

else

begin

if pos(' /F',uppercase(tl)) <> 0

then

begin

RemoveAllRA(help,1);

ForceDirectories(trim(help));

end

else

begin

RemoveAllRA(help,0);

ForceDirectories(trim(help));

end;

goto g1;

end;

end;

2: begin//ôàéë

podcur := tl;

if pos(' /P',uppercase(podcur)) <> 0

then

begin

if pos(' /Q',uppercase(podcur)) <> 0

then

begin

if pos(' /F',uppercase(podcur)) <> 0

then

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),0);

end

else

begin

if pos(' /S',uppercase(tl)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),0);

end;

goto g1;

end

else

begin

MyWriteln('Вы точно хотите удалить все папки и файлы? y/n');

Readln;

Readln(tl);

if trim(uppercase(tl)) = 'Y'

then

begin

if pos(' /F',uppercase(podcur)) <> 0

then

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),0);

end

else

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),0);

end;

goto g1;

end

else goto g1;

end;

end

else

begin

if pos(' /F',uppercase(podcur)) <> 0

then

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),0);

end

else

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),0);

end;

goto g1;

end;

end;

end;

goto g1;

end

else

begin

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

rg.Exec(trimleft(tl));

if rg.Match[0] <> ''

then

begin

help := stringreplace(curpath,'>','',[rfReplaceAll]);

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;

exist := 0;

ExistsDelA(stringreplace(trim(help),'\'+GetFileNameWE(trim(help)),'\',[]),GetFileNameWE(trim(help)));

case exist of

0: begin

MyWriteln('Объект не существует');

end;

1: begin

if pos(' /P',uppercase(tl)) <> 0

then

begin

if pos(' /Q',uppercase(tl)) <> 0

then

begin

if pos(' /F',uppercase(tl)) <> 0

then

begin

RemoveAllRA(trim(help),1);

ForceDirectories(trim(help));

end

else

begin

RemoveAllRA(trim(help),0);

ForceDirectories(trim(help));

end;

goto g1;

end

else

begin

MyWriteln('Вы точно хотите удалить все папки и файлы? y/n');

Readln;

Readln(tl);

if trim(uppercase(tl)) = 'Y'

then

begin

if pos(' /F',uppercase(tl)) <> 0

then

begin

RemoveAllRA(trim(help),1);

ForceDirectories(trim(help));

end

else

begin

RemoveAllRA(trim(help),0);

ForceDirectories(trim(help));

end;

goto g1;

end

else goto g1;

end;

end

else

begin

if pos(' /F',uppercase(tl)) <> 0

then

begin

RemoveAllRA(trim(help),1);

ForceDirectories(trim(help));

end

else

begin

RemoveAllRA(trim(help),0);

ForceDirectories(trim(help));

end;

goto g1;

end;

end;

2: begin

podcur := tl;

if pos(' /P',uppercase(podcur)) <> 0

then

begin

if pos(' /Q',uppercase(podcur)) <> 0

then

begin

if pos(' /F',uppercase(podcur)) <> 0

then

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),0);

end

else

begin

if pos(' /S',uppercase(tl)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),0);

end;

goto g1;

end

else

begin

MyWriteln('Вы точно хотите удалить все папки и файлы? y/n');

Readln;

Readln(tl);

if trim(uppercase(tl)) = 'Y'

then

begin

if pos(' /F',uppercase(podcur)) <> 0

then

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),0);

end

else

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),0);

end;

goto g1;

end

else goto g1;

end;

end

else

begin

if pos(' /F',uppercase(podcur)) <> 0

then

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),1,GetFileNameWE(help),0);

end

else

begin

if pos(' /S',uppercase(podcur)) <> 0

then RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),1)

else RemoveAllFRA(stringreplace(help,GetFileNameWE(help),'',[]),0,GetFileNameWE(help),0);

end;

goto g1;

end;

end;

end;

goto g1;

end

else

begin

rg.Expression := '[\[]{1}[\,\.A-Za-z0-9]*[\]]{1}';

rg.Exec(trimleft(tl));

if rg.Match[0]<>''

then

begin

end

else

begin

end;

goto g1;

end;

end;

end;

goto g1;

end;

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