Finden Sie "mystring" in Dateien und geben Sie nur einen Teil der übereinstimmenden Zeilen zurück

1156
Vicky Dev

Ich habe den folgenden Befehl, um jede Datei im aktuellen Verzeichnis aufzulisten. Die Unterverzeichnisse enthalten "mystring" und die Zeile, in der die Suchzeichenfolge gefunden wird.

@echo off setlocal findstr /s mystring *.txt >> searchResult.list endlocal exit 

Der schwierige Teil ist jedoch, dass der Dateiname und der Pfad nicht im Ergebnis gedruckt werden sollen. Ich möchte auch nicht die ganze passende Zeile, die ganze passende Zeile sieht wie folgt aus:

Somestring::mystring('the_str_i_need', the(string i don't need)); 

Und ich brauche nur einen the_str_i_needTeil der Zeile, um in der Datei "searchresult.list" gedruckt zu werden.

Wie kann ich diese Dinge mit findstroder einem anderen alternativen Befehl erreichen?

0
Wenn Sie ein Konstrukt wie foreach (`for / R`?) Und dann` findstr` für die angegebene %% var verwenden, können Sie den Dateinamen unterdrücken. Die Rückgabe eines Teilstrings kann "haarig" werden. Siehe zum Beispiel: http://stackoverflow.com/questions/11769435/batch-script-substring-from-string. Natürlich können Sie die Ergebnisdatei auch mit Notepad ++ verarbeiten, das Open Source ist und reguläre Ausdrücke in Suchen / Ersetzen verarbeitet. Yorik vor 8 Jahren 0
Bitte [bearbeiten] Sie Ihre Frage und fügen Sie eine kleine Testdatei mit der gesuchten Zeichenfolge sowie eine separate Zeile in der Frage mit der ** genauen ** Ausgabe hinzu, die Sie wünschen, wenn "Mystring" gefunden wird. DavidPostill vor 8 Jahren 0
mit findstr ist das nicht möglich Mit powershell https://stackoverflow.com/q/40780784/995714 ist das viel einfacher phuclv vor 6 Jahren 0

0 Antworten auf die Frage