{ zipshell.pas } { Spracovanie ZIP archivov. } { } { Author: Ľuboš Saloky } { Datum: 01.01.1996 http://www.trsek.com } program Spracovanie_ZIP_archivov; {$M 16384,0,0} uses Dos,Crt; var time,sekundy:real; e,hod,min,sec,stot:word; d:longint; pom:searchrec; prep,ciel:string; ch:char; procedure adresar(zac:string); var z:searchrec; begin FindFirst(zac+'*.*',0,z); while DosError=0 do begin Inc(e); if z.Name<>ParamStr(1) then d:=d+z.Size; FindNext(z); end; FindFirst(zac+'*.*',$10,z); while DosError=0 do begin if (z.attr and directory<>0) and (z.name<>'.') and (z.name<>'..') then adresar(zac+z.name+'\'); FindNext(z); end; end; BEGIN {----- hlavny program -----} ClrScr; prep:='-ex '; ciel:=''; writeln('k - Kompresia: maximálna'); writeln('c - Cieľový adresár a disk: totožný so zdrojovým'); writeln('iná klávesa - začiatok komprimácie'); repeat ch:=ReadKey; case ch of 'k':begin GotoXY(16,1); if prep='-ex ' then begin prep:='-en '; writeln('normálna '); end else begin prep:='-ex '; writeln('maximálna'); end; end; 'c':begin GotoXY(1,4); write('Zadaj cieľový adresár a cestu:'); readln(ciel); GotoXY(29,2); if ciel='' then writeln('totožný so zdrojovým') else writeln(ciel+' '); GotoXY(1,4); DelLine; end; end; until (ch<>'k') and (ch<>'c'); if ciel<>'' then ciel:=ciel+'\'; if ciel[1]='a' then prep:=prep+'-& '; GetTime(hod,min,sec,stot); time:=60*hod+min+sec/60+stot/6000; Exec('pkzip.exe',prep+'-p -r '+ciel+ParamStr(1)+' *.*'); GetTime(hod,min,sec,stot); time:=60*hod+min+sec/60+stot/6000-time; sekundy:=Frac(time)*60; case DosError of 0:begin writeln('Čas komprimácie: ',time:0:0,' minút ',sekundy:0:2,' sekúnd'); d:=0;e:=0; adresar(''); writeln('Počet súborov: ',e-1); FindFirst(ciel+ParamStr(1),$3F,pom); writeln('Celková dĺžka: ',d,' skomprimovaná na ',pom.Size); writeln('Kompresný pomer: ',pom.Size/d*100:0:2,'%'); writeln('Rýchlosť komprimácie: ',d/1048576/time:0:3,' MB za minútu'); end; 2:writeln('Súbor nenájdený.'); 3:writeln('Cesta k súboru neplatná.'); 5:writeln('Prístup k súboru zakázaný!!!'); 6:writeln('DosError #6: Invalid Handle.'); 8:writeln('Nie je dostatok pamate.'); 10:writeln('DosError #10: Innvalid Environment.'); 11:writeln('DosError #11: Invalid Format.'); 18:writeln('Nie je možné otvoriť viac súborov!!!'); end; END.