How to use FINDSTR to search in a specific line?
The required code for findstr should be:
findstr /b /n "Hi" "example.txt"
Is there something that can search for "Hi" string only in the commanded line
Com base no texto da sua pergunta, vou assumir algumas coisas:
- Você deseja encontrar uma string APENAS e nada mais em uma linha específica
- Como seu exemplo
FINDSTR
usa a string/B
de "Hi" está apenas no início da linha e depois é seguida por um espaço para outra palavra, etc. depois dela. - Como o seu exemplo usa o
/N
swtich, presumo que você só o use para imprimir as linhas com as quais as cadeias correspondentes são encontradas, para que você possa executar o comandoFINDSTR
para obter a linha SOMENTE 15.
Aqui estão alguns comandos de exemplo (não em lote) para executar esta
(Você pode copiar e colar todas essas linhas assim que as variáveis forem conectadas adequadamente para serem executadas sem ser um script em lote.)
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
Isso basicamente canaliza o primeiro FINDSTR
com o número da linha da string correspondente no início de todas as linhas para um arquivo temporário (se existir, ele será sobrescrito). Em seguida, ele pesquisa esse arquivo temporário para a cadeia do número da linha, além de dois-pontos e a cadeia (por exemplo, "15: Hi"). Depois, usei um loop FOR /F
, fazendo o colon
e o space
o delimiter
com token
de 2
. Ele irá então ECHO
da string APENAS como você requisita (substitua ECHO
com algum outro comando se necessário).