使用批次驗證進程是否正在使用 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 實例是否正在運行)。

我想做的是將查找到的計數直接儲存到變數中,或以某種形式的 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」:

SetX _my_count 5

然後稍後讀取環境變數...

IF "%_my_count%" == "" 前往 DOTHIS

另一種方法是使用註冊表和 REG 命令。

相關內容