А как насчет этого пакетного кода?
@echo off
for /F "tokens=1,3* delims='()" %%A in ('tabadmin.exe status --verbose') do (
if "%%C" == " is running." (
echo "%%A" is running with identifier %%B.
) else (
echo "%%A" is not running.
)
)
Команда FOR выполняет командную строку tabadmin.exe status --verbose
в отдельном командном процессе в фоновом режиме, который начинается с cmd /C
, и захватывает весь выводзаписывается для обработки STDOUT .
Затем FOR обрабатывает захваченный вывод построчно с игнорированием пустых строк и строк, начинающихся с точки с запятой, которых нет в захваченном выводе.
Строка разбивается на подстроки (токены) с использованием указанных разделителей '()
.
Первая подстрока между '
представляет интерес и поэтому ссылается на tokens=1
.Он присваивается указанной переменной цикла A
.
Вторая подстрока - это просто пробел между '
и (
.Этот пробел не нужен и по этой причине игнорируется.
Третья подстрока - это номер идентификатора в круглых скобках.Эта строка представляет интерес и поэтому на нее ссылается опция 3
в tokens=
.Он присваивается следующей переменной цикла после указанной переменной цикла A
в соответствии с ASCII-таблицей , которая является переменной цикла B
.
И последняя подстрока - это все после )
upдо конца строки из-за *
после 3
в конце tokens=1,3*
, который присвоен переменной цикла C
.
Для понимания используемых команд и их работы откройте окно командной строкивыполните там следующие команды и очень внимательно прочитайте все страницы справки, отображаемые для каждой команды.