Stapelverarbeitung bei Textdokumenten?

Knogle

Volt-Modder(in)
Moin

Ich moechte bei 560 Textdateien die jeweils erste, und letzte Zeile loeschen

Wie kann ich das bewerkstelligen?
Dann moechte ich am Ende alle 560 bearbeiteten Dateien in eine Textdatei zusammenfassen

Ist das z.B. mit Batch moeglich? Wenn ja wie?
 
Du kannst dir auch ein kleines C (oder was auch immer) - Programm schreiben. das einfach aus allen Dateinen den Mittelteil nimmt und in eine Datei schreibt. Du musst dann nur irgendwie über Nummerierung in den Dateinamen o.ä. für die richtige Reihenfolge sorgen.

Brauchst du die einzelnen veränderten Dateien auch oder nur das Endergebnis?
 
Ich könnte dir da auch ein kleines Program schreiben heute Abend. Müsstes mir nur sagen, wie die Dateinamen aufgebaut sind, wegen der Sortierung.

Sollen da dann noch Leerzeilen dazwischen? Ich gehe jetzt mal davon aus, das die Dateien alle in einem Ordner liegen.
 
Also die Dateien haben die Endung .map und haben Namen wie z.B. (001).map bis etwa (560).map

Leerzeilen brauchts keine ;D
 
Mal kurz aus dem Hirn geklopft und nicht getestet.


Code:
            foreach(string file in Directory.EnumerateFiles(path, "*.map"))            {
                string[] lines = File.ReadAllLines(file);


                File.AppendAllLines(outputfile, lines.Skip(1).Take(lines.Length - 2));
            }

Das sollte eigentlich für jedes File im Verzeichnis "path", welches mit .map Endet, die Zeilen auslesen und in "outputfile" die ausgelesenen Lines ohne erste und letzte Zeile schreiben.
 
Bei mir würde das ganze so aussehen.

Code:
unit Unit1;


{$mode objfpc}{$H+}


interface


uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, FileCtrl,
  StdCtrls;


type


  { TForm1 }


  TForm1 = class(TForm)
    Button1: TButton;
    FileListBox1: TFileListBox;
    ListBox1: TListBox;
    ListBox2: TListBox;
    SaveDialog1: TSaveDialog;
    SelectDirectoryDialog1: TSelectDirectoryDialog;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;


var
  Form1: TForm1;


implementation


{$R *.lfm}


{ TForm1 }


procedure TForm1.Button1Click(Sender: TObject);
var i, j: integer;
begin
  ListBox2.Clear;


  if SelectDirectoryDialog1.Execute and SaveDialog1.Execute
    then
      begin
        FileListBox1.Directory:=SelectDirectoryDialog1.FileName;
        FileListBox1.UpdateFileList;


        i:=0;
        while i< FileListBox1.Items.Count do
          begin
            ListBox1.Items.LoadFromFile(SelectDirectoryDialog1.FileName+'\'+FileListBox1.Items[i]);
            j:=1;
            while j< ListBox1.Items.Count-1 do
              begin
                listBox2.Items.Add(ListBox1.Items[j]);


                inc(j);
              end;




            inc(i);
          end;

        Listbox2.Items.SaveToFile(SaveDialog1.FileName);
      end;
end;


end.

Ist auch mal kurz getestet, sollte also laufen.
 
Angenommen es sind alle Dateien in einem Verzeichnis: Linux installieren und dann
tail -n +2 *.map | head -n -1 | cat >> newfile
 
Zuletzt bearbeitet:
Ist das oben fuer Batch?? Also kann ich einfach ne .bat Datei bauen?

MfG

Nope.
Das von DKK007 ist Delphi oder sowas. Meins C#.
Beides kannst du nicht in ne .bat haun. Geht natürlich auch mit ner .bat. Aber da kennen sich vllt andere besser aus ^^

Ich hab dir mal meinen Dreizeiler kurz als Programm erstellt.

Im Anhang findest du es. Kannst ja mal schaun, ob das deinen Anforderungen entspricht ^^
 

Anhänge

  • Knogle.zip
    4,5 KB · Aufrufe: 4
Zuletzt bearbeitet:
Zurück