Использование пакетной проверки запуска процесса с помощью WMIC

Использование пакетной проверки запуска процесса с помощью WMIC

Я пытаюсь написать скрипт, который будет проверять, запущен ли процесс (в моем случае — виртуальная машина).

@echo off
wmic process where name="VirtualBox.exe" | find "GitHubEnterprise" /c > tmpcount
set /p count= < tmpcount
echo Number of instances = %count%

Таким образом, это позволяет мне увидеть, запущен ли мой экземпляр GitHub или нет, но для этого требуется, чтобы я мог записать вывод find в файл, а затем считать его обратно и удалить файл. (Следует отметить, что в любой момент времени запущены две копии VirtualBox.exe, поэтому я пытаюсь убедиться, что экземпляр GitHubEnterprise запущен).

Мне бы хотелось сохранить это число из find непосредственно в переменной или использовать его в какой-либо форме оператора if.

В ходе моих собственных исследований по этому вопросу я видел много предложений по использованию forцикла для этой цели, и я пробовал сделать это следующим образом, но безуспешно:

@echo off
setlocal enableextensions
for /f "tokens=*" %%a in (
'wmic process where "name='VirtualBox.exe'" ^| find "GitHubEnterprise" /c'
) do ( 
@set count = %a
)
echo Number of instances = %count%
pause
endlocal

Может ли кто-нибудь увидеть/сказать мне, что я делаю здесь неправильно, или дать предложение, как это сделать лучше.

Спасибо всем, хорошего дня.

ЖД

решение1

Попробуйте использовать SETX,

Установить переменные среды,СЕТХможно использовать для установки переменных среды для машины (HKLM) или текущего пользователя, вошедшего в систему (HKCU):

Установите переменную _my_count на «5» в среде пользователя:

УстановитьX _my_count 5

затем прочитайте переменную окружения позже...

ЕСЛИ "%_my_count%" == "" ПЕРЕЙТИ К ЭТОМУ

Другой способ — использовать реестр и команду REG.

Связанный контент