home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* GCOPY.PAS *)
- (* Selektives Kopieren von Dateien *)
- (* (c) 1991 Dieter Wagner & DMV-Verlag *)
- (* ------------------------------------------------- *)
- PROGRAM gc;
-
- {$M 16284,0,0}
- USES Dos;
-
- VAR
- F : SearchRec;
- G, T : STRING;
- D, S : LONGINT;
- i, K, Z : INTEGER;
-
- FUNCTION GetN(VAR N : INTEGER) : INTEGER;
- BEGIN
- T := ''; K := 1;
- WHILE (G[K] <> ',') AND (K < 4) DO INC(K);
- T := Copy(G, 1, K-1);
- Delete(G, 1, K);
- Val(T, N, K);
- N := Abs(N);
- GetN := K;
- END;
-
- FUNCTION GetD : INTEGER;
- BEGIN
- IF D = 0 THEN
- FindFirst('*.*', $20, F)
- ELSE
- FindNext(F);
- INC(D);
- GetD := DosError;
- END;
-
- FUNCTION GetF : INTEGER;
- BEGIN
- i := GetN(Z);
- IF (i = 0) THEN
- FOR K := 1 TO Z DO i := GetD;
- D := 0;
- GetF := i;
- END;
-
- PROCEDURE ShowF(N : INTEGER);
- BEGIN
- WHILE GetD = 0 DO
- IF (N = D) OR (N = 0) THEN BEGIN
- WriteLn(D:3, ' ', F.Size:8, ' ', F.Name);
- S := S + F.Size;
- INC(Z);
- END;
- D := 0;
- END;
-
- BEGIN
- Z := 0; D := 0; S := 0;
- G := ParamStr(1);
- IF ParamCount < 2 THEN BEGIN
- IF G = '' THEN
- ShowF(0)
- ELSE
- WHILE GetN(i) = 0 DO ShowF(i);
- WriteLn(Z, ' Datei(en) ', S, ' Bytes');
- END ELSE
- WHILE GetF = 0 DO BEGIN
- Write(F.Name);
- SwapVectors;
- Exec(GetEnv('COMSPEC'), '/C Copy ' + F.Name +
- ' ' + ParamStr(2));
- SwapVectors;
- END;
- END.
- (* ------------------------------------------------- *)
- (* Ende von GCOPY.PAS *)
-