Eu tenho que acreditar que isso foi perguntado e respondido antes. Mas aqui está um script em lote simples que pode fazer o trabalho.
::StringCount String File
::
:: Count the number of times that String appears in File.
:: The search is not case sensitive.
:: Enclosing quotes are not considered to be part of the string.
:: The string cannot contain =
::
@echo off
setlocal disableDelayedExpansion
set count=0
for /f usebackq^ delims^=^ eol^= %%A in (%2) do set "ln=%%A"&call :testLine %1
echo %count%
exit /b
:testLine
setlocal enableDelayedExpansion
:testLine2
if defined ln if "!ln:*%~1=!" neq "!ln!" (
set /a count+=1
set "ln=!ln:*%~1=!"
goto testLine2
)
endlocal & set /a count=%count%
exit /b
O uso da linha de comando seria
StringCount null yourFile.txt
Isso pode ficar muito lento com arquivos grandes.
Eu escrevi um utilitário JScript / batch híbrido chamado REPL.BAT que facilita o trabalho e deve ser muito rápido. O utilitário executa uma pesquisa em regex e substitui as linhas lidas de stdin e grava o resultado em stdout. Tem um bom número de opções, incluindo opções que simplificam essa tarefa. O utilitário é puro script que será executado em qualquer máquina moderna do Windows a partir do XP. A documentação completa está incorporada no script.
Veja como ele pode ser usado para resolver seu problema, supondo que a pesquisa seja diferencia maiúsculas de minúsculas .
<yourFile.txt repl (null) \n$1\n ax | find /c "null"
Se você quiser que a pesquisa seja insensível a maiúsculas e minúsculas
<yourFile.txt repl (null) \n$1\n aix | find /i /c "null"