Ich möchte die Zeilennummer in einer Datei zurückgeben, die immer das gleiche Präfix hat, der Rest aber variieren kann.
Ist es möglich, eine Datei nur mithilfe von Standard-Windows-Komponenten und Befehlszeilenprogrammen zu durchsuchen, um die Zeilennummer des übereinstimmenden Teils zurückzugeben?
Ein Beispiel für die Zeile, nach der ich suche, ist:
</TR></TABLE><TABLE cellspacing...
Weiterer Code, der variieren kann
Die Zeile in der Datei ist die Ausgabe eines Generators und daher bin ich nicht sicher, was sich bei jeder Generierung der Datei geändert hat oder ändern könnte.
Antwort1
FINDSTR wird verwendet, um in einer Datei nach Text zu suchen. Dabei wird jede Zeile ausgegeben, die der Suche entspricht. Die /N
Option bewirkt, dass jeder übereinstimmenden Ausgabezeile die Zeilennummer vorangestellt wird LineNumber:FullTextOfMatchingLine
.
Da Ihr Suchbegriff ein Leerzeichen enthält, müssen Sie diese /C:"search string"
Option verwenden, da der Suchbegriff sonst als mehrere durch Leerzeichen getrennte Suchbegriffe interpretiert wird.
Sie möchten, dass die Suche nur den Zeilenanfang abgleicht, also benötigen Sie diese /B
Option. Alternativ können Sie die /R
Option hinzufügen, die Suche als regulären Ausdruck zu behandeln und dann den ^
Zeilenanfangsanker am Anfang Ihrer Suchzeichenfolge zu verwenden.
findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"
Sie fragen nur nach der Zeilennummer, ohne den Text der entsprechenden Zeile. Mit FOR /F können Sie die gewünschte(n) Zeilennummer(n) extrahieren.
for /f "delims=:" %A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do @echo %A
Wenn Sie den Befehl in eine Batchdatei einfügen, müssen Sie die Prozente verdoppeln:
@echo off
for /f "delims=:" %%A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do echo %%A
Antwort2
Verwenden Sie findstr /N strings filename
es, um nach Vorkommen von strings
in der Datei zu suchen filename
.
Hinweis: /N
„Druckt die Zeilennummer vor jeder übereinstimmenden Zeile“
Für weitere Informationen zur Nutzung führen Siefindstr /?