home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / pastrick / selcopy / gcopy.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1991-12-05  |  1.7 KB  |  78 lines

  1. (* ------------------------------------------------- *)
  2. (*                   GCOPY.PAS                       *)
  3. (*           Selektives Kopieren von Dateien         *)
  4. (*         (c) 1991 Dieter Wagner & DMV-Verlag       *)
  5. (* ------------------------------------------------- *)
  6. PROGRAM gc;
  7.  
  8. {$M 16284,0,0}
  9. USES Dos;
  10.  
  11. VAR
  12.   F       : SearchRec;
  13.   G, T    : STRING;
  14.   D, S    : LONGINT;
  15.   i, K, Z : INTEGER;
  16.  
  17.   FUNCTION GetN(VAR N : INTEGER) : INTEGER;
  18.   BEGIN
  19.     T := '';  K := 1;
  20.     WHILE (G[K] <> ',') AND (K < 4) DO INC(K);
  21.     T := Copy(G, 1, K-1);
  22.     Delete(G, 1, K);
  23.     Val(T, N, K);
  24.     N := Abs(N);
  25.     GetN := K;
  26.   END;
  27.  
  28.   FUNCTION GetD : INTEGER;
  29.   BEGIN
  30.     IF D = 0 THEN
  31.       FindFirst('*.*', $20, F)
  32.     ELSE
  33.       FindNext(F);
  34.     INC(D);
  35.     GetD := DosError;
  36.   END;
  37.  
  38.   FUNCTION GetF : INTEGER;
  39.   BEGIN
  40.     i := GetN(Z);
  41.     IF (i = 0) THEN
  42.       FOR K := 1 TO Z DO i := GetD;
  43.     D := 0;
  44.     GetF := i;
  45.   END;
  46.  
  47.   PROCEDURE ShowF(N : INTEGER);
  48.   BEGIN
  49.     WHILE GetD = 0 DO
  50.       IF (N = D) OR (N = 0) THEN BEGIN
  51.         WriteLn(D:3, '  ', F.Size:8, '  ', F.Name);
  52.         S := S + F.Size;
  53.         INC(Z);
  54.       END;
  55.     D := 0;
  56.   END;
  57.  
  58. BEGIN
  59.    Z := 0;  D := 0; S := 0;
  60.    G := ParamStr(1);
  61.    IF ParamCount < 2 THEN BEGIN
  62.      IF G = '' THEN
  63.        ShowF(0)
  64.      ELSE
  65.        WHILE GetN(i) = 0 DO ShowF(i);
  66.      WriteLn(Z, ' Datei(en) ', S, ' Bytes');
  67.    END ELSE
  68.      WHILE GetF = 0 DO BEGIN
  69.        Write(F.Name);
  70.        SwapVectors;
  71.        Exec(GetEnv('COMSPEC'), '/C Copy ' + F.Name +
  72.                                ' ' + ParamStr(2));
  73.        SwapVectors;
  74.      END;
  75. END.
  76. (* ------------------------------------------------- *)
  77. (*              Ende von GCOPY.PAS                   *)
  78.