Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#2

AW: DosCommand in Konsolenanwendung, identifier not found

  Alt 29. Apr 2017, 12:39
Ausgehend von Deiner Aufgabenstellung würdest Du eher sowas benötigen:
Delphi-Quellcode:
program Tee;

{$APPTYPE CONSOLE}

var
  line : string;
  sFile : string;
  fFile : TextFile;
begin
  if ParamCount in [1..2] then begin
    sFile := ParamStr(1);
  end else begin
    WriteLn('Syntax: tee Ausgabedatei');
    WriteLn;
    WriteLn(' tee SchreibDieAusgabeHierHin.txt');
    WriteLn;
    WriteLn(' tee SchreibDieAusgabeHierHin.txt append');
    WriteLn(' (Die Ausgabe wird an die bestehende Datei angehangen.)');
    WriteLn;
    halt(255);
  end;
  AssignFile(input, ''); // stdin
  AssignFile(output, ''); // stdout
  AssignFile(fFile, sFile);
  Reset(input);
  Rewrite(output);
  case ParamCount of
    2 : begin
          if ParamStr(2)[1] in ['A','a'] then begin
            {$I-}
            Append(fFile);
            if IOResult <> 0 then Rewrite(fFile);
            {$I+}
          end else begin
            Rewrite(fFile);
          end;
        end;
  else
    Rewrite(fFile);
  end;
  while not Eof do begin
    ReadLn(line);
    WriteLn(line);
    WriteLn(fFile,line);
  end;
  CloseFile(fFile);
  CloseFile(output);
  CloseFile(input);
end.
Das Programm liest die Ausgabe einer Konsolenanwendung und schreibt sie in eine Datei, gibt sie aber auch gleichzeitig auf der Konsole aus.

Der Aufruf erfolgt dann z. B. in dieser Form:dir /s|tee InDieDateiSollGeschriebenWerden.txt In der Schleife while not Eof do begin könntest Du natürlich dann beliebige Auswertungen, Verarbeitungen ... vornehmen.

Geändert von nahpets (29. Apr 2017 um 12:54 Uhr)
  Mit Zitat antworten Zitat