Wie kann man mit FINDSTR in einer bestimmten Zeile suchen?
Der erforderliche Code für findstr sollte lauten:
findstr /b /n "Hi" "example.txt"
Gibt es etwas, das nur in der Befehlszeile nach "Hi" suchen kann
Basierend auf dem Wortlaut Ihrer Frage werde ich einige Dinge annehmen:
- Sie möchten NUR einen String und nichts weiter in einer bestimmten Zeile
- Da Ihr Beispiel
FINDSTR
die/B
Sie-Zeichenfolge von "Hi" verwendet, steht nur am Anfang der Zeile und dann folgt ein Leerzeichen für ein anderes Wort usw. - Da Ihr Beispiel das
/N
swtich verwendet, gehe ich davon aus, dass Sie es nur verwenden, um die Zeilen zu drucken, in denen die übereinstimmenden Zeichenfolgen gefunden werden, so dass Sie denFINDSTR
Befehl ausführen können, um dann NUR Zeile 15 zu erhalten.
Hier sind einige Beispielbefehle (nicht Batch), die ausgeführt werden sollen, um dies auszuführen
(Sie können alle diese Zeilen einfach kopieren und einfügen, sobald Sie die Variablen entsprechend eingefügt haben, um ein Batch-Skript auszuführen.)
SET SearchFile=C:\Path\example.txt SET TmpSearchFile=%Temp%\~tmpSearch00.txt SET String=Hi SET LineNum=15 FINDSTR /B /N "%String%" "%SearchFile%" > "%TmpSearchFile%" FOR /F "USEBACKQ TOKENS=2 DELIMS=: " %A IN (`"FINDSTR /B "%LineNum%:%String%" "%TmpSearchFile%""`) DO ECHO %~A
Dies führt im Wesentlichen die erste FINDSTR
Zeile mit der Zeilennummer der übereinstimmenden Zeichenfolge am Anfang aller Zeilen in eine temporäre Datei (falls vorhanden, wird sie überschrieben). Anschließend wird die temporäre Datei nach der Zeichenfolge der Zeilennummer sowie einem Doppelpunkt und der Zeichenfolge (dh "15: Hi") durchsucht. Anschließend habe ich eine FOR /F
Schleife der Herstellung colon
und space
die delimiter
mit einem token
von 2
. ECHO
Die Zeichenfolge wird dann NUR bei Ihrer Anfrage angezeigt ( ECHO
ggf. durch einen anderen Befehl ersetzen ).