home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1318 / gepackt.exe / UTILITY / SOURCE / DOPPELT.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-08-06  |  7.9 KB  |  223 lines

  1. {$M 10000,10000,655000}
  2. program backdel;
  3.  
  4.   uses
  5.     testfile,getversion,ufile,defstr,crt,udir,dos,uems,uenv;
  6.  
  7.   var
  8.     dirs                               : array [1..26] of dirtyp;
  9.     maxdir                             : byte;
  10.     out                                : text;
  11.     test,test1                         : boolean;
  12.  
  13.   procedure pause;
  14.  
  15.     var
  16.       ch                               : char;
  17.  
  18.     begin
  19.       if keypressed then begin
  20.         ch:=readkey;
  21.         case ch of
  22.           ^[,^c : begin
  23.                     close(out);
  24.                     halt(1);
  25.                   end;
  26.           ^s : ch:=readkey;
  27.         end;
  28.       end;
  29.     end;
  30.  
  31.   procedure compdir(dir1 : dirtyp; i : byte);
  32.  
  33.     var
  34.       st,st1,st2                       : boolean;
  35.       dir                              : dirtyp;
  36.       j                                : byte;
  37.  
  38.     begin
  39.       j:=i;
  40.       writeln(out,'rem Prüfe Disk ',copy(dir1.path,1,2));
  41.       with dir1 do begin
  42.         selectpath(0);
  43.         while not error do begin
  44.           selectfile(0);
  45.           while not error do begin
  46.             if size=0 then
  47.               write('Dateilänge ist 0:')
  48.             else write('Vergleiche Files:');
  49.             clreol;
  50.             writeln(^m^j,path+filename);
  51.             if (size>0) and not error then begin
  52.               if ((attr and (directory+volumeid)) =0) and (filename<>'CRC.DAT')
  53.               then for j:=i to maxdir do with dirs[j] do begin
  54.                 selectpath(0);
  55.                 st2:=true;
  56.                 if copy(dir1.path,1,2)=copy(path,1,2) then
  57.                   if not selectpathname(dir1.path) then begin
  58.                     selectpath(0);
  59.                     st2:=false;
  60.                   end;
  61.                 while not error and (st2 or not test1) do begin
  62.                   pause;
  63.                   write(path);
  64.                   clreol;
  65.                   write(^m);
  66.                   if (path<>dir1.path) and not test1 then begin
  67.                     selectfile(0);
  68.                     while not error and (size<=dir1.size) and not error do begin
  69.                       if (filename<>'CRC.DAT') and ((attr and (directory+volumeid)) =0) then begin
  70.                         st:=false;
  71.                         if size=0 then begin
  72.                           write(^m,'Dateilänge ist 0:');
  73.                           clreol;
  74.                           writeln(^m^j,path+filename);
  75.                           st:=true;
  76.                         end
  77.                         else if (size=dir1.size) and ((path<>dir1.path) or (filename<>dir1.filename)) then begin
  78.                           write(path,filename);
  79.                           clreol;
  80.                           write(^m);
  81.                           if cmpfile(path+filename,dir1.path+dir1.filename) then begin
  82.                             write('Dateien gleich:');
  83.                             clreol;
  84.                             with dir1 do writeln(^m^j,path+filename);
  85.                             writeln(path+filename);
  86.                             writeln(out,'rem Dateien gleich:');
  87.                             with dir1 do writeln(out,'rem del '+path+filename);
  88.                             writeln(out,'rem del '+path+filename);
  89.                             st:=true;
  90.                           end;
  91.                         end;
  92.                         if st then
  93.                           deletefile
  94.                         else selectfile(1);
  95.                       end
  96.                       else deletefile;
  97.                     end;
  98.                   end
  99.                   else if test and (memavail>1000) then with dir do begin
  100.                     st2:=false;
  101.   {                  init;
  102.                     sort(sortsize,false);
  103.                     read(dirs[j].path);}
  104.                     init;
  105.                     emsst:=dirs[i].emsst;
  106.                     emspages:=dirs[i].emspages;
  107.                     lastemsofs:=dirs[i].lastemsofs;
  108.                     emsio:=dirs[i].emsio;
  109.                     emsfree:=dirs[i].emsfree;
  110.                     new(pfad);
  111.                     pfad^:=dirs[i].pfad^;
  112.   {                  if not selectfilename(dir1.filename,false,true) then selectfile(0);}
  113.                     selectfile(1);
  114.                     while not error and (size<=dir1.size) do begin
  115.                       if (attr and (directory+volumeid)) =0 then begin
  116.                         st:=false;
  117.                         if size=0 then begin
  118.                           write(^m,'Dateilänge ist 0:');
  119.                           clreol;
  120.                           writeln(^m^j,path+filename);
  121.                           st:=true;
  122.                         end
  123.                         else if (size=dir1.size) and ((path<>dir1.path) or (filename<>dir1.filename)) then begin
  124.                           write(path,filename);
  125.                           clreol;
  126.                           write(^m);
  127.                           if cmpfile(path+filename,dir1.path+dir1.filename) then begin
  128.                             write('Dateien gleich:');
  129.                             clreol;
  130.                             with dir1 do writeln(^m^j,path+filename);
  131.                             writeln(path+filename);
  132.                             writeln(out,'rem Dateien gleich:');
  133.                             with dir1 do writeln(out,'rem del '+path+filename);
  134.                             writeln(out,'rem del '+path+filename);
  135.                             st:=true;
  136.                           end;
  137.                         end;
  138.                         if st then
  139.                           deletefile
  140.                         else selectfile(1);
  141.                       end
  142.                       else deletefile;
  143.   {                      selectfile(1);
  144.                       end
  145.                       else selectfile(1);;}
  146.                     end;
  147.                     dirs[i].emsfree:=emsfree;
  148.                     dirs[i].lastemsofs:=lastemsofs;
  149.                     dispose(pfad);
  150.                   end;
  151.                   selectpath(1);
  152.                 end;
  153.               end;
  154.               {else }dir1.deletefile;
  155. {              if (dir1.path<>dirs[j].path) or test then dir1.selectfile(1)
  156.               else dir1.error:=true;}
  157.             end
  158.             else dir1.deletefile;
  159.           end;
  160.           selectpath(1);
  161.         end;
  162.       end;
  163.     end;
  164.  
  165.   var
  166.     disks                              : array [1..26] of char;
  167.     s                                  : string;
  168.     i,j                                : integer;
  169.     dir                                : string80;
  170.  
  171.   begin
  172. {emsstatus:=false;}
  173.     directvideo:=not pcmos and not cmpenv('video','bios',true);
  174.     writeln;
  175.     fillchar(disks,sizeof(disks),0);
  176.     s:=getenv('disks');
  177.     j:=1;
  178.     for i:=1 to length(s) do if s[i] in ['a'..'z','A'..'Z'] then begin
  179.       disks[j]:=upcase(s[i]);
  180.       inc(j);
  181.     end;
  182.     maxdir:=pred(j);
  183.     if maxdir=0 then halt(1);
  184.     assign(out,'\doppelt.bat');
  185.     {$i-}
  186.     append(out);
  187.     {$i+}
  188.     if ioresult<>0 then rewrite(out);
  189.     test:=paramcount>0;
  190.     test1:=paramcount>1;
  191.     if not test1 then begin
  192. {@maxdir:=1;}
  193.       for i:=1 to maxdir do with dirs[i] do begin
  194.         init;
  195.         sort(sortsize,false);
  196.         write(^m,'Read Directory Disk ',disks[i],'  freier Speicher:',memavail:8,'  EMS:',emm.free*emspagesize:12);
  197.         readdisk(disks[i]);
  198.         pause;
  199.       end;
  200.       writeln;
  201.       for I:=1 to maxdir do begin
  202.          compdir(dirs[i],i);
  203.          close(out);
  204.          append(out);
  205.        end;
  206.     end
  207.     else begin
  208.       for i:=1 to maxdir do with dirs[1] do begin
  209.         init;
  210.         sort(sortsize,false);
  211.         write(^m,'Read Disk ',disks[i]);
  212.         readdisk(disks[i]);
  213.         compdir(dirs[1],1);
  214.         close(out);
  215.         append(out);
  216.         clear;
  217.         pause;
  218.       end;
  219.     end;
  220.     close(out);
  221.     writeln('Alle doppelten Files stehen in der Datei \doppelt.bat.');
  222.   end.
  223.