In einer Batchdatei eine Ascii-Datei durchsuchen

Hallo!

weiß jemand, wie man innerhalb einer Batch-Datei eine Ascii-Datei nach einem bestimmten Wort oder Ausdruck durchsucht, wenn man den genauen Ort des Ausdrucks in der Datei kennt, also nur prüfen will, ob er vorhanden ist, oder nicht.
Hintergrund: Ein DFÜ-Programm überträgt Daten und erstellt nachher eine Art Log-File, in dem unter anderem steht, ob die Daten erfolgreich übertragen wurden. Nun soll dieses Log-File nach dem Ausdruck „1 Datei(en) kopiert“ überprüft werden. Falls dieser vorhanden ist, soll die Übertragungsdatei gelöscht werden, ansonsten soll nichts damit geschehen.

Weiß zufällig jemand, wie man diese Überprüfung bewerkstelligen kann?

CU

Thomas

del x.x
type logdatei | find „1 Datei kopiert“ > x.x
if exist x.x echo alles klar

del x.x
type logdatei | find „1 Datei kopiert“
> x.x
if exist x.x echo alles klar

Die Idee ist zwar gut, funktioniert aber leider nicht, da x.x immer erzeugt wird. Nur, daß einmal der gesuchte Text drinsteht und im anderen Fall eine leere Datei vorliegt. Alles klar erscheint aber auf jeden Fall!

CU

Thomas

Holla

Ich denke, Grep fuer Windows sollte dir weiterhelfen. Schau dir mal:
http://www.interlog.com/~tcharron/grep.html
oder
http://kili.pncl.co.uk/~huw/grep/index.html
an, es gibt aber bestimmt noch mehr Versionen

Gruss, Lutz

Nur, daß einmal der gesuchte Text
drinsteht und im anderen Fall eine leere
Datei vorliegt. Alles klar erscheint aber
auf jeden Fall!

Bist Du sicher?
Ich habs unter DOS 7 probiert und find hat keine Datei angelegt, wenn Suchtext nicht vorhanden.

Welche DOS-Version hast Du?

Vielleicht liefert find einen Errorlevel?

Es handelt sich um ein DOS-Fenster unter Win ´95 also auch „DOS 7“

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich habs nochmal probiert (auf anderem Rechner) und siehe: Du hast recht, eine 0-Byte lange Datei wird erstellt!

Aber: Du kannst den Errorlevel benutzen:

type bootlog.txt | find /I „himem.sys“
if errorlevel 1 echo 1
if errorlevel 0 echo 0

gibt 1 wenn nicht gefunden
gibt 0 wenn gefunden

Ist richtig, daß es 0 ergibt, wenn gefunden, ergibt aber 1 und 0 wenn nicht gefunden! D. h. warscheinlich bezieht sich dann bei der zweiten Errorlevelabfrage der Errorlevel auf die erste If-Abfrage. Ganz sauber ist diese Version noch nicht, aber wir kommen näher!

Gruß

Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ist richtig, daß es 0 ergibt, wenn
gefunden, ergibt aber 1 und 0 wenn nicht
gefunden! D. h. warscheinlich bezieht

Ist normal; Errorlevels mußt Du immer vom höchsten an abfragen und dann eben ein entsprechendes GOTO machen statt ECHO