home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* EXCEPT.PAS *)
- (* Ausführen von DOS-Befehlen "ohne" bestimmte Dateien *)
- (* (c) 1990 Peter W. Schweickard & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM Except;
- {$M 4000,0,0}
-
- USES Dos;
-
- VAR
- fNr : File;
- f : SearchRec;
- Call,
- Dummy,
- NextAttr : WORD;
- SaveAttr : ARRAY [1..500] OF WORD;
- Search,
- ExecPar : STRING;
-
- FUNCTION Upper(Input : STRING) : STRING;
- VAR
- i : INTEGER;
- BEGIN
- FOR i := 1 TO Length(Input) DO
- Input[i] := UpCase(Input[i]);
- Upper := Input;
- END {Upper};
-
- BEGIN
- { Fehlerüberprüfung: Mindestens drei Parameter }
- IF ParamCount < 3 THEN BEGIN
- WriteLn('Zu wenige Parameter!');
- Halt(1);
- END;
- { Überprüfung auf DO und DOS-Befehl }
- Dummy := 1;
- REPEAT
- Inc(Dummy);
- IF Dummy = ParamCount THEN BEGIN
- WriteLn(' DO fehlt oder kein Befehl angegeben!');
- Halt(1);
- END;
- UNTIL Upper(ParamStr(Dummy)) = 'DO';
- { Alle angegebenen Dateien auf "hidden" setzen }
- NextAttr := 1;
- Dummy := 1;
- Search := ParamStr(Dummy);
- REPEAT
- FindFirst(Search, AnyFile, f);
- WHILE DosError = 0 DO BEGIN
- Assign(fNr, f.Name);
- GetFAttr(fNr, SaveAttr[NextAttr]);
- SetFAttr(fNr, Hidden);
- FindNext(f);
- Inc(NextAttr);
- END;
- Inc(Dummy);
- Search := ParamStr(Dummy);
- UNTIL Upper(Search) = 'DO';
- Call := Dummy + 1;
- { Parameter für den Befehl herausfiltern }
- ExecPar := '';
- IF Call <> ParamCount THEN
- FOR Dummy := Call + 1 TO ParamCount DO
- ExecPar := ExecPar + ' ' + ParamStr(Dummy);
- { Turbo-Interrupts tauschen und Befehl weitergeben }
- SwapVectors;
- Exec('\COMMAND.COM', '/C ' + ParamStr(Call) + ' ' +
- ExecPar);
- { Interrupts "zurückbiegen" ... }
- SwapVectors;
- { ... und alte Attribute wieder herstellen }
- NextAttr := 1;
- FOR Dummy := 1 TO ParamCount - 1 DO BEGIN
- Search := ParamStr(Dummy);
- IF Upper(Search) = 'DO' THEN Exit;
- FindFirst(Search, AnyFile, f);
- WHILE DosError = 0 DO BEGIN
- Assign(fNr, f.Name);
- SetFattr(fNr, SaveAttr[NextAttr]);
- FindNext(f);
- Inc(NextAttr);
- END;
- END;
- END {Except}.
- (* ------------------------------------------------------ *)
- (* Ende von EXCEPT.PAS *)
-