Я должен верить, что об этом уже спрашивали и отвечали. Но вот простой пакетный скрипт, который может сделать эту работу.
::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
Использование командной строки будет
StringCount null yourFile.txt
Это может стать довольно медленным с большими файлами.
Я написал гибридную утилиту JScript/batch под названием REPL.BAT, которая может упростить работу и должна быть достаточно быстрой. Утилита выполняет поиск и замену регулярных выражений в строках, считанных из стандартного ввода, и записывает результат в стандартный вывод. У него есть достаточное количество опций, включая опции, которые упрощают эту задачу. Утилита представляет собой чистый скрипт, который будет работать на любой современной машине с Windows начиная с XP. Полная документация встроена в скрипт.
Вот как это можно использовать для решения вашей проблемы, предполагая, что поиск чувствителен к регистру.
<yourFile.txt repl (null) \n$1\n ax | find /c "null"
Если вы хотите, чтобы поиск не учитывал регистр
<yourFile.txt repl (null) \n$1\n aix | find /i /c "null"