pantherstyle
Goto Top

Filter reagieren falsch

Hallo,
ich habe folgenden Suchalgorythmus (vllt kommt er bekannt vor ;D):
for /F "skip=1 tokens=1* delims=\" %%i IN (%HELP_PATH%\indexpfade.txt) DO (  
findstr /L :"\$Id \$Author \$URL \$LastChangedRevision \$LastChangedDate \$LastChangedBy" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %SEARCH_PATH%\%%i >> %HELP_PATH%\IDtreffer.txt
)

Dazu die Frage:
Wie kann ich diesen Algorythmus so verändern, dass er folgende Datei in IDTreffer schreibt?

    • $Id$
    • $URL$
    • $LastChange
    • $LastChangedDate$
    • $LastchangedBy$

Wie man sieht enthält die Datei Alle Angaben, bis auf $Author.
Das Problem dabei ist, dass mir das Programm nur die Dateien ausgibt, in denen ALLE Suchkriterien nicht enthalten sind. Wie kann ich das also so umschreiben, das Alle 100% tig enthalten sein müssen, damit er sie NICHT mit ausgibt?

Dankäfön schonmal im Voraus ;D

Content-Key: 113153

Url: https://administrator.de/contentid/113153

Printed on: April 19, 2024 at 07:04 o'clock

Member: Biber
Biber Apr 03, 2009 at 14:21:03 (UTC)
Goto Top
Moin Pantherstyle,

ich würde gar nicht erst versuchen, mir selbst einen Suchalgorithmus zusammenzuschroten, wenn ich doch schon ein so feines Tool wie Findstr.exe für lau nutzen kann.

Angenommen, Du klimperst alle Deine Pflichtworte in eine Textdatei (ich nenn die mal "Suchworte.txt"):
$Id$
$URL$
$LastChange$
$LastChangedDate$
$LastchangedBy$
$Author$
... und hast z.B. eine zu prüfende Datei "EineDatei.txt" des Aussehens...
$Id$
$URL$
$LastChange$
$LastChangedDate$
$LastchangedBy$
$Karl-HeinZ$

Dann ergäbe doch folgende Eingabe (gekennzeichnet durch ">" am CMD-Prompt. die Ausgabe darunter
>findstr /L /i /v /G:e:\work\einedatei.txt e:\work\suchworte.txt
$Author$
---> denn $Author$ fehlt und ob noch irgendeine $Karl-heinZ$-Zeile drinsteht war ja nicht gefragt.
--> und der Returnwert /das ErrorLevel wäre 0 (da etwas gefunden)

Würde auch noch $Author$ in der zu prüfenden Datei stehen, wäre die Ausgabe "nix" und Errorlevel 1 (nix gefunden).

Also kannst Du in dein FOR-Konstrukt doch sinngemäß einbauen:
for /F "skip=1 tokens=1* delims=\" %%i IN (%HELP_PATH%\indexpfade.txt) DO (  
findstr /L /i /v /G:%SEARCH_PATH%\%%i  suchworte.txt >nul && (echo %SEARCH_PATH%\%%i >>%HELP_PATH%\IDtreffer.txt)
)
... und alles ist fertig.

Grüße
Biber