Quero retornar o número da linha em um arquivo que tenha sempre o mesmo prefixo, mas o restante pode variar.
É possível pesquisar um arquivo usando apenas componentes padrão do Windows e utilitários operacionais Commandline para retornar o número da linha da parte correspondente.
Um exemplo da linha que estou procurando é:
</TR></TABLE><TABLE cellspacing...
Mais código que pode variar
A linha no arquivo é a saída de um gerador e, portanto, não tenho certeza do que mudou ou pode mudar toda vez que o arquivo for gerado.
Responder1
FINDSTR é usado para pesquisar texto em um arquivo, imprimindo cada linha que corresponde à pesquisa. A /N
opção faz com que o número da linha seja anexado a cada linha de saída correspondente como LineNumber:FullTextOfMatchingLine
.
Como sua sequência de pesquisa inclui um espaço, você deve usar a /C:"search string"
opção; caso contrário, a sequência de pesquisa será interpretada como vários termos de pesquisa delimitados por espaço.
Você deseja que a pesquisa corresponda apenas ao início da linha, então você precisa da /B
opção. Alternativamente, você pode adicionar a /R
opção de tratar a pesquisa como uma expressão regular e então usar a ^
âncora do início da linha no início da sua string de pesquisa.
findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"
Você pede apenas o número da linha, sem o texto da linha correspondente. Você pode usar FOR /F para extrair o(s) número(s) de linha desejado(s).
for /f "delims=:" %A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do @echo %A
Se você colocar o comando em um arquivo em lote, deverá dobrar as porcentagens:
@echo off
for /f "delims=:" %%A in ('findstr /b /c:"</TR></TABLE><TABLE cellspacing" "yourFile.htm"') do echo %%A
Responder2
Use findstr /N strings filename
para procurar instâncias de strings
no arquivo filename
.
Nota: /N
"Imprime o número da linha antes de cada linha correspondente"
Para obter mais informações de uso, executefindstr /?