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

@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 запущен).

Я хотел бы сохранить это число из находки непосредственно в переменной или использовать его в некоторой форме оператора 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

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

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

JD

1 ответ1

0

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

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

Установите переменную _my_count в '5' в пользовательской среде:

SetX _my_count 5

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

IF "% _my_count%" == "" GOTO DOTHIS

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .