배치를 사용하여 프로세스가 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

누구든지 내가 여기서 잘못하고 있는 것을 보거나 말해줄 수 있거나 더 나은 방법을 제안할 수 있습니까?

모두들 감사합니다. 좋은 하루 보내세요.

JD

답변1

SETX를 사용해 보세요.

환경 변수를 설정하고,SETX머신(HKLM) 또는 현재 로그온한 사용자(HKCU)에 대한 환경 변수를 설정하는 데 사용할 수 있습니다.

사용자 환경에서 _my_count 변수를 '5'로 설정합니다.

SetX _my_count 5

그런 다음 나중에 환경 변수를 읽으십시오.

IF "%_my_count%" == "" DOTHIS로 이동

또 다른 방법은 레지스트리와 REG 명령을 사용하는 것입니다.

관련 정보