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
FINDSTRusa a string/Bde "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
/Nswtich, 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 comandoFINDSTRpara 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).