home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / tricks / pascal / do.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-01-09  |  1.5 KB  |  61 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     DO.PAS                             *)
  3. (*             Joker für DOS-Kommandos                    *)
  4. (*         (c) 1992 Thomas Mai & DMV-Verlag               *)
  5. (* ------------------------------------------------------ *)
  6. {$M 8192,0,0}
  7. {$D-,L-,R-,S-,I-}
  8.  
  9. PROGRAM _DO;
  10.  
  11. USES Dos, Crt;
  12.  
  13. VAR
  14.   sCom,
  15.   sPath : STRING;
  16.   bN    : BYTE;
  17.   ch    : CHAR;
  18.  
  19.   PROCEDURE Scan(P : STRING);
  20.   VAR
  21.     Rec : SearchRec;
  22.     S   : STRING;
  23.   BEGIN
  24.     FindFirst(P + '*.*', $3F, Rec);
  25.     WHILE DosError <> 18 DO BEGIN
  26.       IF KeyPressed THEN BEGIN
  27.         ch := ReadKey;
  28.         IF (ch = #3) THEN BEGIN
  29.           ChDir(sPath);  Halt(1);
  30.         END;
  31.       END;
  32.       IF (Rec.Attr AND 16 SHR 4 <> 0) AND
  33.          (Rec.Name <> '.') AND
  34.          (Rec.Name <> '..') THEN BEGIN
  35.         WriteLn(#13#10, P + Rec.Name);
  36.         ChDir(P + Rec.Name);
  37.         SwapVectors;
  38.         Exec(GetEnv('COMSPEC'), sCom);
  39.         SwapVectors;
  40.         Scan(P + Rec.name + '\');
  41.       END;
  42.       FindNext(Rec);
  43.     END;
  44.   END;
  45.  
  46. BEGIN
  47.   IF ParamCount = 0 THEN
  48.     Writeln('Aufruf: DO <DOS-Befehl>')
  49.   ELSE BEGIN
  50.     sCom := '';
  51.     FOR bN := 1 TO ParamCount DO
  52.       sCom := sCom + Paramstr(bN) + #32;
  53.     sCom := '/C' + #32 + sCom;
  54.     GetDir(0, sPath);
  55.     Scan(sPath[1] + ':\');
  56.     ChDir(sPath);
  57.   END;
  58. END.
  59. (* ------------------------------------------------------ *)
  60. (*              Ende von DO.PAS                           *)
  61.