Все уже, получил нужные циферки, но сама идея различить строчные/прописные буквы только средствами CMD покоя не давала...
Таки соорудил свой батничек без внешних вызовов FindStr...
Идея в том, что для
set при замене подстроки не важно, какой символ искать, и подменив в строке мелких букв искомую, получаем туже самую строку, если искомая буква строчная, иначе буква прописная.
Код:

@Echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
set C=0
set S=0
set W=0
set Chars=abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя
for /f "usebackq tokens=2,3 delims= " %%P in ("%~dpn0.txt") do if not %%P_==_ if not %%Q_==_ call :Calc %%P "%%Q"
set /a T=%S%+%W%
set S= %S%
set S=%S:~-11%
set W= %W%
set W=%W:~-11%
set T= %T%
set T=%T:~-11%
Echo Spares: %S%
Echo Service:%W%
Echo ===================
Echo Total: %T%
exit
:Calc
set ch=%~2
set ch=%ch:~0,1%
set b=!Chars:%ch%=%ch%!
for /f "tokens=1 delims=.," %%C in ("%1") do set /a C=%%C
if %Chars%==%b% (set /a W+=C) else (set /a S+=C)
exit /b
зы: Заметил пару неприятных моментов:
1. Неинициализированные в основном теле переменные (в моем случае
S и
W) работают как локальные, т.е. их значения не сохраняются.
2. Поскольку если используешь "
SetLocal EnableDelayedExpansion" - жди случайных искажений имен файлов и некоторых данных, а наличие записи
set b=!Chars:%ch%=%ch%! требует включения этого режима, то попробовал включать режим непосредственно перед указанной строкой, а следом отключать - при этом в итогах также получал одни нули.