Como encontro todas as ocorrências da palavra "pdf" em um arquivo?
Use o seguinte arquivo em lotes.
test.cmd
@echo off
setlocal
setlocal EnableDelayedExpansion
set _count=0
set _match=pdf
set _file=abc.txt
for /f "tokens=*" %%i in (%_file%) do (
set _line=%%i
call :match
)
goto :done
:match
for /f "tokens=1,*" %%a in ("%_line%") do (
set _word=%%a
set _line=%%b
)
if /i "%_word%"=="%_match%" set /a _count=!_count!+1
if "%_line%"=="" goto :eof
goto :match
:done
echo."pdf" was found !_count! times.
endlocal
- Substitua
abc.txt
pelo nome do arquivo que contém seu texto. - Substitua
echo."pdf" was found !_count! times.
pelos seus próprios comandosecho
conforme apropriado.
abc.txt
abc pdf def pdf
pdf
pdf pdf pdf
abc def ghi
uso de exemplo
F:\test>test
"pdf" was found 6 times.
F:\test>
e se o arquivo txt for assim abc.pdf def.pdf pdf pdf pdf pdf abc def ghi
Só conta 4
Nesse caso, o segundo comando for /f
precisa ser alterado para usar os .
e (o padrão) como delimitadores para a correspondência.
Aqui está a linha de substituição:
for /f "tokens=1,* delims=. " %%a in ("%_line%") do (
delims=.
foi adicionado.
Outras leituras
- para - condicionalmente executar um comando várias vezes
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.