使用批处理验证进程是否正在通过 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”:

设置X _my_count 5

然后稍后读取环境变量...

如果“%_my_count%”==“”转到此操作

另一种方法是使用注册表和 REG 命令。

相关内容