Эмуляция командного процессора ОС UNIX в среде Windows 9x

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

p>begin

Inc(n);

f[n] := Info.Name;

end;

end;

FindNext(Info);

until DosError <> 0;

end;

begin

if Pos( , cnp) = 0 then

begin

WriteLn(Необходимо задать параметры!);

Exit;

end;

Delete(cnp, 1, 7);

n := 72;

keys := ;

if Pos(-, cnp) <> 0 then

begin

if Pos( , cnp) = 0 then

pos1 := Length(cnp)

else

pos1 := Pos( , cnp);

keys := Copy(cnp, 1, pos1);

Delete(keys, 1, 1);

Delete(cnp, 1, pos1);

end;

if Pos(d, keys) <> 0 then

begin

d := True;

Delete(keys, Pos(d, keys), 1);

end

else

d := False;

if Pos(s, keys) <> 0 then

begin

s := True;

Delete(keys, Pos(s, keys), 1);

end

else

s := False;

if Pos(w, keys) <> 0 then

begin

w := True;

Delete(keys, Pos(w, keys), 1);

while Pos( , keys) <> 0 do

Delete(keys, Pos( , keys), 1);

Val(keys, n, cod);

if cod <> 0 then

begin

WriteLn(Ошибка при задании длины строки!);

Exit;

end;

end

else

w := False;

dir1 := Copy(cnp, 1, Pos( , cnp) - 1);

Delete(cnp, 1, Pos( , cnp));

dir2 := cnp;

Scan(dir1, f1, n1);

if n1 = - 1 then

Exit;

Scan(dir2, f2, n2);

if n2 = - 1 then

Exit;

k := 0;

WriteLn(s_or_f, Файлы из первого каталога.);

for i := 1 to n1 do

begin

cod := 0;

for j := 1 to n2 do

if f1[i] = f2[j] then

cod := 1;

if cod = 0 then

begin

Inc(k);

WriteLn(s_or_f, f1[i]);

end;

end;

WriteLn(s_or_f, Файлы из второго каталога.);

for j := 1 to n2 do

begin

cod := 0;

for i := 1 to n1 do

if f2[j] = f1[i] then

cod := 1;

if cod = 0 then

begin

Inc(k);

WriteLn(s_or_f, f2[j]);

end;

end;

if s then

Exit;

WriteLn(s_or_f, Файлы общие для двух каталогов.);

for j := 1 to n2 do

begin

cod := 0;

for i := 1 to n1 do

if f2[j] = f1[i] then

cod := 1;

if cod = 1 then

begin

Inc(k);

WriteLn(s_or_f, f2[j]);

if d then

begin

st := dir1;

if st[Length(st)] = \ then

st := st + f2[j]

else

st := st + \ + f2[j];

st := st + + dir2;

if st[Length(st)] = \ then

st := st + f2[j]

else

st := st + \ + f2[j];

Diff(st);

end;

end;

end;

end;

Procedure Tr(comu: string);

var

p1, p2, s, s1: string;

k: integer;

begin

if Error(comu) then exit;

Delete(comu, 1, 3);

if Pos( , comu) = 0 then

begin

WriteLn(Недостаточно параметров!);

exit;

end;

p1 := Copy(comu, 1, Pos( , comu) - 1);

Delete(comu, 1, Pos( , comu));

p2 := comu; ReadLn(s);

while Pos(p1, s) <> 0 do

begin

k := Pos(p1, s); Delete(s, k, length(p1));

insert(p2, s, k);

end;

WriteLn(s_or_f, s);

end;

Procedure Comm(comu:string);

var

fname1, fname2, f: string[80];

f1, f2: text;

s1, s2: string;

par: string[10];

r1, r2, i: integer;

b, v1, v2, v3: boolean;

begin

if Pos( , comu) = 0 then

begin

WriteLn(Не указаны параметры команды!);

Exit;

end;

Delete(comu, 1, 5);

if Pos( , comu) = 0 then

begin

WriteLn(Недостаточно параметров!);

Exit;

end;

par := ;

if Pos(-, comu) <> 0 then

begin

par := Copy(comu, 2, Pos( , comu) - 2);

Delete(comu, 1, Pos( , comu));

end;

fname1 := Copy(comu, 1, Pos( , comu) - 1);

Delete(comu, 1, Pos( , comu));

fname2 := comu;

if fname1 = fname2 then

begin

WriteLn(Одинаковые имена файлов!);

Exit;

end;

{$I-}

Assign (f1, fname1); Reset (f1);

if IOResult <> 0 then

begin

Writeln (Файл , fname1, не найден!);

Exit;

end;

Assign (f2, fname2); Reset (f2);

{$I+}

if IOResult <> 0 then

begin

Writeln (Файл , fname2, не найден!);

Exit;

end;

r1 := 0; r2 := 0;

v1 := True;

v2 := True;

v3 := True;

if par = 1 then

v1 := False;

if par = 2 then

v2 := False;

if par = 3 then

v3 := False;

if par = 12 then

begin

v1 := False;

v2 := False;

end;

if par = 13 then

begin

v1 := False;

v3 := False;

end;

if par = 23 then

begin

v2 := False;

v3 := False;

end;

while True do

begin

Reset(f1);

for i := 1 to r1 do

ReadLn(f1, s1);

Inc(r1);

ReadLn(f1, s1);

Reset(f2);

b := False;

while not EOF(f2) do

begin

ReadLn(f2, s2);

if s1 = s2 then

begin

if v3 then

WriteLn(s_or_f, , s1);

b := True;

Break;

end;

end;

if not b and v1 then

WriteLn(s_or_f, s1);

Reset(f2);

for i := 1 to r2 do

ReadLn(f2, s2);

Inc(r2);

ReadLn(f2, s2);

if EOF(f1) and EOF(f2) then

r1 := - 1;

Reset(f1);

b := False;

while not EOF(f1) do

begin

ReadLn(f1, s1);

if s1 = s2 then

begin

b := True;

Break;

end;

end;

if not b and v2 then

WriteLn(s_or_f, , s2);

if (r1 = - 1) then

Break;

end;

Close(f1);

Close(f2);

end;

Procedure Rmcat(comu:string);

var

keys, f: string;

p, s: boolean;

n, i: integer;

BEGIN

if Error(comu) then exit;

Delete(comu, 1, 6);

keys := ;

if Pos(-, comu) <> 0 then

begin

keys := Copy(comu, 1, Pos( , comu));

Delete(comu, 1, Pos( , comu));

end;

if Pos(p, keys) <> 0 then

p := True

else

p := False;

if Pos(s, keys) <> 0 then

s := True

else

s := False;

f := comu;

{$I-} RmDir(f); {$I+}

if IOResult <> 0 then

begin

if not s then

WriteLn(Kаталог не существует или содержит файлы!);

Exit;

end;

WriteLn(Каталог , f, удален.);

if p then

begin

if Pos(\, f) = 0 then

begin

GetDir(0, f);

ChDir(..);

end

else

begin

for i := 1 to Length(f) do

if f[i] = \ then

n := i;

f[0] := Chr(n - 1);

end;

RmDir(f);

end;

End;

Procedure Cat(comu: string);

var

fname, fname2: string;

b: string;

f: text;

p, Flag: boolean;

k, f2: integer;

begin

if Error(comu) then Exit;

Delete(comu, 1, 4);

f2 := 0;

if Pos( , comu) = 0 then

fname := comu

else

begin

f2 := 1;

fname := Copy(comu, 1, Pos( , comu) - 1);

fname2 := Copy(comu, Pos( , comu) + 1, Length(comu) - Pos( , comu));

end;

if (fname = -) or (fname = ) then

fname := con;

repeat

if f2 = 2 then

f2 := 0;

{$I-} Assign(f, fname); Reset(f); {$I+}

if IOResult <> 0 then

begin

WriteLn(Неверное имя файла!);

Exit;

end;

k := 0;

while not EOF(f) do

begin

ReadLn(f, b);

k := k + 1;

WriteLn(s_or_f, b);

end;

Close(f);

if f2 = 1 then

begin

fname := fname2;

f2 := 2;

end;

until f2 = 0;

end;

procedure Mv(comu:string);

{перенос файлов}

const rs = 512;

var

keys, fname1, fname2, f: string;

f1, f2: file;

nr, nw: word;

buf: array [1..rs] of char;

i, r: boolean;

yn: char;

Begin

if error(comu) then exit;

delete(comu, 1, 3);

if error(comu) then exit;

keys := ;

if pos(-, comu) <> 0 then

begin

keys := copy(comu, 1, pos( , comu));

delete(comu, 1, pos( , comu));

end;

if pos(