ИМО, это не обязательно должно быть настолько сложным, как об этом говорит другой ответ.
Если это единственные строки в текстовом файле, вы можете использовать следующее:
@echo off
set var=
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%a in (sfsview_monitor1.txt) do set var=!var!%%a
set var=!var:~1!
echo !var!
endlocal
Если строки присутствуют в произвольных местах в текстовом файле, вы можете использовать следующее:
@echo off
set var=
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%a in ('findstr /c:"Total pages" /c:"Pages used" /c:"Pages free" sfsview_monitor1.txt') do set var=!var!%%a
set var=!var:~1!
echo !var!
endlocal
Вам даже не нужна первая версия, так как вторая является более общей.
Если вы даже не заботитесь о сохранении значений в переменной и просто заинтересованы в выводе, следующие строки также будут работать:
@for /f "tokens=2 delims=:" %%a in (sfsview_monitor1.txt) do @echo | set /p var=%%a
а также
@for /f "tokens=2 delims=:" %%a in ('findstr /c:"Total pages" /c:"Pages used" /c:"Pages free" sfsview_monitor1.txt') do @echo | set /p var=%%a
Важно: в обеих этих однострочных версиях в конце строки есть пробел, который требуется! Кроме того, как отмечено выше, вы можете просто игнорировать первую версию и использовать вторую, поскольку последняя является более общей из двух.