sarumahr
Goto Top

Batch: Dateien nach "exakten" Strings durchsuchen

Hallo,
Ich möchte eine txt Datei nach einem String durchsuchen aber stoße dabei immer auf ein Problem. Wenn ich z.B. nach "String" suchen möchte und mit "Strin" suchen lasse gibt mir das Programm trotzdem einen Treffer aus. Kann man dies irgendwie vermeiden? Es ist sehr wichtig das das Programm nach dem exakten String sucht da ich Strings habe die mit den selben Zeichen anfangen und sich nicht ändern lassen, da ich sie genau so in einer Variable abspeichern muss.

Content-ID: 474137

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

Ausgedruckt am: 15.11.2024 um 03:11 Uhr

emeriks
emeriks 17.07.2019 um 14:23:03 Uhr
Goto Top
Hi,
Dann musst Du nach ganzen Wörtern suchen. Man müsste jetzt wissen, wie "das Programm" da sucht.
Mit einem eigenen Programm (Script) könnte man bei der Suche berücksichtigen
  • Zeile beginnt Suchstring + Leerzeichen
  • Zeile enhält Leerzeichen + Suchstring + Leerzeichen
  • Zeile endet mit Leerzeichen + Suchstring

Je nachdem, was das für eine Datei ist, müsste man dann ggf. noch andere Zeichen berücksichtigen, z.B.
  • Satzzeichen
  • Tabulator
  • Anführungszeichen

E.
Sarumahr
Sarumahr 17.07.2019 um 14:27:30 Uhr
Goto Top
vielen Dank schonmal für die Hilfe,
die Textdatei besteht aus dreistelligen Zahlen z.B. 192, 120, usw. alle sind untereinander geschrieben:
120
110
192
nach dem Schema z.B.
Kraemer
Kraemer 17.07.2019 um 14:40:51 Uhr
Goto Top
Zitat von @Sarumahr:
nach dem Schema z.B.
das Schema stimmt nicht, da es dein angebliches Problem schlicht nicht aufzeigt.
Sarumahr
Sarumahr 17.07.2019 um 14:42:31 Uhr
Goto Top
es geht darum wie die Zahlen angeordnet sind. Das Problem ist wenn ich mein Programm die Zahl 1 suchen lasse bekomme ich trotzdem Output und das soll nicht passieren da meine Zahlen dreistellig sind und somit nur exakte Ergebnisse berücksichtigt werden sollen
emeriks
emeriks 17.07.2019 um 14:43:49 Uhr
Goto Top
Wenn die Zahlen immer dreistellig sind, dann musst Du auch dreistellig suchen, ist doch logisch. ggf. suchen nach "001" statt nach "1".
Kraemer
Kraemer 17.07.2019 aktualisiert um 14:44:26 Uhr
Goto Top
Sarumahr
Sarumahr 17.07.2019 um 14:46:13 Uhr
Goto Top
das Programm ist nicht für mich selber deswegen besteht das Problem das andere den Fehler machen könnten und sich so viel zreschießen könnten
Sarumahr
Sarumahr 17.07.2019 um 14:46:40 Uhr
Goto Top
perfekt danke. Ja ich nutze findstr
Kraemer
Lösung Kraemer 17.07.2019 aktualisiert um 14:48:00 Uhr
Goto Top
Zitat von @Sarumahr:

perfekt danke. Ja ich nutze findstr
dann hier gucken:
^	Zeilenposition: der Zeile ab
$	Zeilenposition: Ende der Zeile

mies übersetzt
Sarumahr
Sarumahr 17.07.2019 um 14:49:44 Uhr
Goto Top
muss ich da das erste Zeichen nachdem ich suche oder die Position des Zeichens angeben?
Sarumahr
Sarumahr 17.07.2019 um 14:52:02 Uhr
Goto Top
sprich wie ist die Syntax für beide Befehle?
140447
Lösung 140447 17.07.2019 aktualisiert um 15:03:40 Uhr
Goto Top
Findstr /irc:"^123$" Datei.txt  
Sarumahr
Sarumahr 17.07.2019 um 16:52:07 Uhr
Goto Top
Kann ich auch anstatt Datei.txt einen Pfad angeben?
Kraemer
Lösung Kraemer 17.07.2019 um 16:55:28 Uhr
Goto Top
Zitat von @Sarumahr:

Kann ich auch anstatt Datei.txt einen Pfad angeben?

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:Verzeichnisliste]
        [/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.
Sarumahr
Sarumahr 22.07.2019 um 13:59:24 Uhr
Goto Top
Ich hätte zu dem Thema nochmal eine Frage undzwar ist es möglich, wenn der Erste Suchdurchlauf nichts findet einen zweiten in einer anderen txt Datei zu starten?
140447
140447 22.07.2019 aktualisiert um 14:35:57 Uhr
Goto Top
Zitat von @Sarumahr:

Ich hätte zu dem Thema nochmal eine Frage undzwar ist es möglich, wenn der Erste Suchdurchlauf nichts findet einen zweiten in einer anderen txt Datei zu starten?
Logo, wofür gibt's wohl das Errorlevel ...
Findstr /irc:"^123$" "d:\Pfad\Datei.txt" || (  
    Findstr /irc:"^123$" "d:\Pfad\Datei2.txt"   
)
Sarumahr
Sarumahr 22.07.2019 um 14:42:53 Uhr
Goto Top
Perfekt dankeschön
Sarumahr
Sarumahr 22.07.2019 um 15:02:06 Uhr
Goto Top
er findet aber leider auch wieder ein Ergebnis wenn ich 1 oder 2 usw. eingebe face-sad, sollte doch eigentlich nicht so sein
140447
140447 22.07.2019 aktualisiert um 15:14:45 Uhr
Goto Top
Doku lesen und richtig machen, dann lüppt dat auch, heulen hat noch nie geholfen!
Sarumahr
Sarumahr 22.07.2019 um 15:22:56 Uhr
Goto Top
der Emoji war eher lustig gemeint xD. Problem ist einfach, dass die Suche nicht einwandfrei funktioniert
Sarumahr
Sarumahr 22.07.2019 um 15:28:12 Uhr
Goto Top
:ip
	set /p marktnr=Bitte geben Sie eine Marktnummer ein:
	if "%marktnr%"=="c" cls   
	if "%marktnr%"=="exit" exit  
	findstr /irc:"^%marktnr%$" "C:\Users\test\Desktop\MarktauswahlTest_2\ips\192ip.txt" || (  
		findstr /irc:"^%marktnr%$" "C:\Users\test\Desktop\MarktauswahlTest_2\ips\10ip.txt"  
			start sabfr.bat
			exit
		)
		
Sarumahr
Sarumahr 25.07.2019 um 13:16:16 Uhr
Goto Top
könnte mir Bitte dazu jemand sagen wo der Fehler sein soll, weil vom Prinzip her sehe ich kein Problem das das Programm das nicht richtig ausführt