Batch: FOR und IF

Von: , Frage gestellt am Sa, 16. Dez 2006

Hallo Leute

folgendes Problem:

set TEXT=ABCD
for %%f in (*.txt) do find /i "%TEXT%" %%f >> suche.txt

Wie kann man erreichen, dass nur die Textdatei in
suche.txt geschrieben wird, wenn der Inhalt (%TEXT%)
vorhanden ist?
IF %TEXT% == ? .... >> suche.txt

Kann man das realisieren?

Klaus

4 Antworten zu dieser Frage

  1. Antwort von nach 20 Stunden 0 hilfreich
    Re: Batch: FOR und IF

    Falls gewünscht ist, dass nur der Dateiname
    angegeben wird, in dem der Text entahlten ist,
    aber nicht die Zeile selbst, in der der Text enthalten ist,
    dann ist die Option /M die richtige.


    /M Gibt nur die Namen der Dateien aus, die die Zeichenfolge

    C:\Dokumente und Einstellungen\xpde>findstr /?
    Sucht nach Zeichenfolgen in Dateien.

    FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:Datei]
    [/C:Zeichenfolge] [/G:Datei] [/D:Verz.liste] [/A:Farbattribute] [/OFF[LINE]]
    Zeichenfolgen [[Laufwerk:][Pfad]Dateiname[ ...]]

    /B Sucht am Zeilenanfang.
    /E Sucht am Zeilenende.
    /L Sucht nach dem Text buchstabengetreu.
    /R Sucht nach der Zeichenfolge als regulärem Ausdruck.
    /S Sucht nach entsprechenden Dateien im aktuellen Verzeichnis
    und allen Unterverzeichnissen.
    /I Ignoriert Groß-/Kleinschreibung.
    /X Gibt Zeilen aus, die vollkommen übereinstimmen.
    /V Gibt Zeilen aus, die die Zeichenfolge nicht enthalten.
    /N Gibt die Zeilennummer vor jeder Trefferzeile an.
    /M Gibt nur die Namen der Dateien aus, die die Zeichenfolge enthalten.
    /O Gibt den Offset des Zeichens vor jeder gefundenen Zeile aus.
    /P Überspringt Dateien mit Zeichen, die nicht gedruckt werden können.
    /OFF[LINE] Überspringt keine Offlinedateien.
    /A:Attrib Gibt die Farbattribute als zwei hexadezimale Ziffern an.
    Siehe "COLOR /?"
    /F:Datei Liest eine Dateiliste aus der angegebenen Datei ein.
    /C:Zeichenfolge Sucht nach Zeichenfolge buchstabengetreu.
    /G:Datei Liest Suchzeichenfolge aus der angegebenen Datei ein.
    /D:Verzeichnis Durchsucht eine mit Semikolons getrennte Verzeichnisliste.
    Zeichenfolge Text, nach dem gesucht werden soll.
    [Laufwerk:][Pfad] Dateiname
    Angabe der zu durchsuchenden Datei(en).

    Leerzeichen weisen auf mehrere getrennte Zeichenfolgen hin, außer es wurde /C
    als Option angegeben. Zum Beispiel sucht 'FINDSTR "Windows NT" BR.TXT' nach
    "Windows" oder "NT" in der Datei BR.TXT. 'FINDSTR /C:"Windows NT" BR.TXT'
    hingegen sucht nach "Windows NT" in der Datei BR.TXT.

    Schnellübersicht regulärer Ausdrücke:
    . Platzhalter: beliebiges Zeichen
    * Wiederholung: keine oder mehrere Wiederholungen
    des/der vorhergehenden Zeichens/Klasse
    ^ Zeilenposition: Anfang der Zeile
    $ Zeilenposition: Ende der Zeile
    [Klasse] Zeichenklasse: beliebiges Zeichen aus einem Zeichensatz
    [^Klasse] Umgekehrte Klasse: beliebiges Zeichen nicht im Zeichensatz
    [x-y] Bereich: beliebige Zeichen im angegebenen Bereich
    \x Escape: direkte Verwendung eines Metazeichens x
    \<xyz Wortposition: am Anfang des Wortes
    xyz\> Wortposition: am Ende des Wortes

    Informationen zu FINDSTR mit regulären Ausdrücken finden Sie im
    Onlinebefehlsverzeichnis.


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

  2. Antwort von nach einem Tag 0 hilfreich
    Re: Batch: FOR und IF

    Hallo Klaus,

    wie Hannes schon richtig anmerkt sollte "findstr" das Kommando Deiner Wahl sein und es reicht auch ein einfaches Kommandos ohne for-Schleife:

    set text=Hi Ha Ho
    findstr /M /L "%text%" *.txt > suche.txt
    


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

  3. Antwort von nach einem Tag 0 hilfreich
    Re: Batch: FOR und IF

    Hallo,

    erstmal danke. Werde das mal testen.

    Genauere Erklärung:
    Ich habe Textdateien von A - Z
    Jede ca. 10 - 35 KB gross.

    Ab und zu muss ich in diesen Dateien einen bestimmten
    Begriff suchen (Bestellnummer, Teil usw.)

    Die DOS Routine ist gut, weil die sehr schnell ist.
    Dauert höchstens 2 Sekunden.
    Ich muss aber sehen, welche Textdatei das ist
    und die entsprechende Zeile.

    D.h., beides muss angezeigt werden.

    Was anderes:
    Schreibe jetzt einen Beitrag unter HTML oder Homepage.
    Ich habe da ein Problem mit der AOL Suchmaschine.
    Vielleicht intressiert's.

    Gruss
    Klaus

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: Batch: FOR und IF

      Hi,

      wenn es Dir nichts ausmacht auch den Text der Zeile in der Datei zu haben, ersetze einfach die Option "/M" durch die Option "/N".

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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!