home *** CD-ROM | disk | FTP | other *** search
- {$M 10000,10000,655000}
- program backdel;
-
- uses
- testfile,getversion,ufile,defstr,crt,udir,dos,uems,uenv;
-
- var
- dirs : array [1..26] of dirtyp;
- maxdir : byte;
- out : text;
- test,test1 : boolean;
-
- procedure pause;
-
- var
- ch : char;
-
- begin
- if keypressed then begin
- ch:=readkey;
- case ch of
- ^[,^c : begin
- close(out);
- halt(1);
- end;
- ^s : ch:=readkey;
- end;
- end;
- end;
-
- procedure compdir(dir1 : dirtyp; i : byte);
-
- var
- st,st1,st2 : boolean;
- dir : dirtyp;
- j : byte;
-
- begin
- j:=i;
- writeln(out,'rem Prüfe Disk ',copy(dir1.path,1,2));
- with dir1 do begin
- selectpath(0);
- while not error do begin
- selectfile(0);
- while not error do begin
- if size=0 then
- write('Dateilänge ist 0:')
- else write('Vergleiche Files:');
- clreol;
- writeln(^m^j,path+filename);
- if (size>0) and not error then begin
- if ((attr and (directory+volumeid)) =0) and (filename<>'CRC.DAT')
- then for j:=i to maxdir do with dirs[j] do begin
- selectpath(0);
- st2:=true;
- if copy(dir1.path,1,2)=copy(path,1,2) then
- if not selectpathname(dir1.path) then begin
- selectpath(0);
- st2:=false;
- end;
- while not error and (st2 or not test1) do begin
- pause;
- write(path);
- clreol;
- write(^m);
- if (path<>dir1.path) and not test1 then begin
- selectfile(0);
- while not error and (size<=dir1.size) and not error do begin
- if (filename<>'CRC.DAT') and ((attr and (directory+volumeid)) =0) then begin
- st:=false;
- if size=0 then begin
- write(^m,'Dateilänge ist 0:');
- clreol;
- writeln(^m^j,path+filename);
- st:=true;
- end
- else if (size=dir1.size) and ((path<>dir1.path) or (filename<>dir1.filename)) then begin
- write(path,filename);
- clreol;
- write(^m);
- if cmpfile(path+filename,dir1.path+dir1.filename) then begin
- write('Dateien gleich:');
- clreol;
- with dir1 do writeln(^m^j,path+filename);
- writeln(path+filename);
- writeln(out,'rem Dateien gleich:');
- with dir1 do writeln(out,'rem del '+path+filename);
- writeln(out,'rem del '+path+filename);
- st:=true;
- end;
- end;
- if st then
- deletefile
- else selectfile(1);
- end
- else deletefile;
- end;
- end
- else if test and (memavail>1000) then with dir do begin
- st2:=false;
- { init;
- sort(sortsize,false);
- read(dirs[j].path);}
- init;
- emsst:=dirs[i].emsst;
- emspages:=dirs[i].emspages;
- lastemsofs:=dirs[i].lastemsofs;
- emsio:=dirs[i].emsio;
- emsfree:=dirs[i].emsfree;
- new(pfad);
- pfad^:=dirs[i].pfad^;
- { if not selectfilename(dir1.filename,false,true) then selectfile(0);}
- selectfile(1);
- while not error and (size<=dir1.size) do begin
- if (attr and (directory+volumeid)) =0 then begin
- st:=false;
- if size=0 then begin
- write(^m,'Dateilänge ist 0:');
- clreol;
- writeln(^m^j,path+filename);
- st:=true;
- end
- else if (size=dir1.size) and ((path<>dir1.path) or (filename<>dir1.filename)) then begin
- write(path,filename);
- clreol;
- write(^m);
- if cmpfile(path+filename,dir1.path+dir1.filename) then begin
- write('Dateien gleich:');
- clreol;
- with dir1 do writeln(^m^j,path+filename);
- writeln(path+filename);
- writeln(out,'rem Dateien gleich:');
- with dir1 do writeln(out,'rem del '+path+filename);
- writeln(out,'rem del '+path+filename);
- st:=true;
- end;
- end;
- if st then
- deletefile
- else selectfile(1);
- end
- else deletefile;
- { selectfile(1);
- end
- else selectfile(1);;}
- end;
- dirs[i].emsfree:=emsfree;
- dirs[i].lastemsofs:=lastemsofs;
- dispose(pfad);
- end;
- selectpath(1);
- end;
- end;
- {else }dir1.deletefile;
- { if (dir1.path<>dirs[j].path) or test then dir1.selectfile(1)
- else dir1.error:=true;}
- end
- else dir1.deletefile;
- end;
- selectpath(1);
- end;
- end;
- end;
-
- var
- disks : array [1..26] of char;
- s : string;
- i,j : integer;
- dir : string80;
-
- begin
- {emsstatus:=false;}
- directvideo:=not pcmos and not cmpenv('video','bios',true);
- writeln;
- fillchar(disks,sizeof(disks),0);
- s:=getenv('disks');
- j:=1;
- for i:=1 to length(s) do if s[i] in ['a'..'z','A'..'Z'] then begin
- disks[j]:=upcase(s[i]);
- inc(j);
- end;
- maxdir:=pred(j);
- if maxdir=0 then halt(1);
- assign(out,'\doppelt.bat');
- {$i-}
- append(out);
- {$i+}
- if ioresult<>0 then rewrite(out);
- test:=paramcount>0;
- test1:=paramcount>1;
- if not test1 then begin
- {@maxdir:=1;}
- for i:=1 to maxdir do with dirs[i] do begin
- init;
- sort(sortsize,false);
- write(^m,'Read Directory Disk ',disks[i],' freier Speicher:',memavail:8,' EMS:',emm.free*emspagesize:12);
- readdisk(disks[i]);
- pause;
- end;
- writeln;
- for I:=1 to maxdir do begin
- compdir(dirs[i],i);
- close(out);
- append(out);
- end;
- end
- else begin
- for i:=1 to maxdir do with dirs[1] do begin
- init;
- sort(sortsize,false);
- write(^m,'Read Disk ',disks[i]);
- readdisk(disks[i]);
- compdir(dirs[1],1);
- close(out);
- append(out);
- clear;
- pause;
- end;
- end;
- close(out);
- writeln('Alle doppelten Files stehen in der Datei \doppelt.bat.');
- end.
-