Bestimmte Zeilen aus mehreren Dateien in eine Date schreiben

Anfängerfragen zum Programmieren mit PureBasic.
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

Bestimmte Zeilen aus mehreren Dateien in eine Date schreiben

Beitrag von Nafets »

Hallo,

ich möchte aus den Dateien eines Verzeichnisses alle Zeilen, die mit 'string1' beginnen in eine einzige neue Datei schreiben.

Ich sag schon mal danke für eure Hilfe.
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Aha und wo genau brauchst du Hilfe?
Beim durchsuchen eines Ordners, Einlesen einer Datei, Speichern in eine andere oder ganz wo anders?

Wenn du wissen willst welche Zeile mit "string1" beginnt:

Code: Alles auswählen

If Left(String$, 7) = "string1"
 ...
 ...
EndIf
Zuletzt geändert von Frogger am 17.10.2006 23:16, insgesamt 1-mal geändert.
[PB4.20]
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Bestimmte Zeilen aus mehreren Dateien in eine Date schre

Beitrag von Kiffi »

> ich möchte aus den Dateien eines Verzeichnisses alle Zeilen, die mit
> 'string1' beginnen in eine einzige neue Datei schreiben.

Dateien kannst Du mit ReadFile() auslesen. Die darin enthaltenen Zeilen
kannst Du mit ReadString() ermitteln. Innerhalb eines Strings kann man mit
FindString() eine Zeichenkette suchen. Eine neue Datei kannst Du mit
CreateFile() erstellen. Dort hinein kann man mit WriteString() schreiben.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

da brauchts kein PB für, eine Zeile in der Shell genügt:

Code: Alles auswählen

type *|find "string1" > neuedatei.txt
:mrgreen:
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

Beitrag von Nafets »

Danke für die prompten Antworten.

Ideal wäre, wenn das Programm alle Dateien in bestimmten Verzeichnissen (ohne Unterverzeichnis) nach Zeilen, die mit 'string1' beginnen durchsucht und diese in eine neue Datei schreibt.

Irgendwie klappt´s mit der Schleife bei mir nicht.

In PB will ich es schon machen, um ein bißchen Erfahrung zu sammeln.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ordner auswählen, zieldatei auswählen. dann werden alle zeilen in den dateien im ordner, welche mit "string1" beginnen, in der zieldatei gesammelt.

Code: Alles auswählen

Procedure gatherLines( path.s, file.s, search.s )
  Protected line.s
  If CreateFile(0, file)
    If ExamineDirectory(1, path, "*.*")
      While NextDirectoryEntry(1)
        If ReadFile(2, path+DirectoryEntryName(1) )
          While Not Eof(2)
            line=ReadString(2)
            If Left(line, Len(search)) = search
              WriteStringN(0, line)
            EndIf
          Wend
          CloseFile(2)
        EndIf
      Wend
      FinishDirectory(1)
    EndIf
    CloseFile(0)
  EndIf
EndProcedure


ordner.s=PathRequester("","")
zieldatei.s=SaveFileRequester("","sammelbox01.txt", "*.txt|*.*", 0)
suchen.s="string1"

gatherLines( ordner, zieldatei, suchen )
my pb stuff..
Bild..jedenfalls war das mal so.
Nafets
Beiträge: 19
Registriert: 09.02.2005 21:01

Beitrag von Nafets »

kurz und knackig... :allright:

Ich werd das mal für meine Bedürfnisse umsetzen.
Vielen Dank erst mal.
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Re: Bestimmte Zeilen aus mehreren Dateien in eine Date schre

Beitrag von Alves »

Kiffi hat geschrieben:> ich möchte aus den Dateien eines Verzeichnisses alle Zeilen, die mit
> 'string1' beginnen in eine einzige neue Datei schreiben.

Dateien kannst Du mit ReadFile() auslesen. Die darin enthaltenen Zeilen
kannst Du mit ReadString() ermitteln. Innerhalb eines Strings kann man mit
FindString() eine Zeichenkette suchen. Eine neue Datei kannst Du mit
CreateFile() erstellen. Dort hinein kann man mit WriteString() schreiben.

Grüße ... Kiffi
Statt CreateFile() lieber mit OpenFile() testen, ob schon vorhanden.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Bestimmte Zeilen aus mehreren Dateien in eine Date schre

Beitrag von Kiffi »

Alves hat geschrieben:Statt CreateFile() lieber mit OpenFile() testen, ob schon vorhanden.
Mit OpenFile kann man nicht testen, ob eine Datei bereits besteht. Das macht
man bevorzugterweise mit FileSize().

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Alves
Beiträge: 1208
Registriert: 19.04.2006 18:24
Kontaktdaten:

Beitrag von Alves »

Stimmt, verdammt. Hast Recht. Da will ich auch mal was Sinvolles schreiben, und dann schreibe ich wieder was Falsches. :cry:
Antworten