
Estou tentando escrever um script que verifique se um processo está em execução (no meu caso, uma máquina virtual)
@echo off
wmic process where name="VirtualBox.exe" | find "GitHubEnterprise" /c > tmpcount
set /p count= < tmpcount
echo Number of instances = %count%
Fazer isso me permite ver se minha instância do GitHub está em execução ou não, mas exige que eu seja capaz de gravar a saída de find em um arquivo, lê-lo novamente e excluir o arquivo. (Deve-se observar que há duas cópias do VirtualBox.exe em execução a qualquer momento, portanto, estou tentando verificar se a instância do GitHubEnterprise está em execução).
O que eu gostaria de fazer é armazenar esse número de contagem encontrado diretamente em uma variável ou usá-lo em alguma forma de instrução if.
Agora, em minha própria pesquisa sobre isso, vi muitas sugestões de uso de um for
loop para isso e tentei da seguinte maneira, sem sucesso:
@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
Alguém pode ver/me dizer o que estou fazendo de errado aqui ou fazer uma sugestão para fazer isso melhor.
Obrigado a todos, tenham um ótimo dia.
JD
Responder1
Tente usar SETX,
Definir variáveis de ambiente,SETXpode ser usado para definir variáveis de ambiente para a máquina (HKLM) ou usuário atualmente conectado (HKCU):
Defina a variável _my_count como '5' no ambiente de usuários:
SetX _minha_contagem 5
então leia a variável de ambiente mais tarde ...
SE "%_my_count%" == "" VAI FAZER ISSO
outra forma seria usar o registro e o comando REG.