CMD/BAT 查看某一进程是否存在的方法

写 Windows 脚本启动某个服务进程的时候需要先判断该进程是否已经存在,在参考了 Kafka 的 Windows 启动脚本后找到一个取巧的办法。Kafka 启动时需要判断系统是否是32位系统,它的办法是通过 wmic 命令查询操作系统信息,然后查询字符串。如果字符串不存在,ERRORLEVEL 值为 1。类似的,我们可以查询进程的ID,如果ID不存在,则启动服务。Kafka 的启动代码如下:

IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
    rem detect OS architecture
    wmic os get osarchitecture | find /i "32-bit" >nul 2>&1
    IF NOT ERRORLEVEL 1 (
        rem 32-bit OS
        set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
    ) ELSE (
        rem 64-bit OS
        set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G
    )
)

以记事本为例。记事本启动时能够查询到进程ID:

依靠上面的区别,结合 Kafka 的方案,解决方案如下:

 以下是完整的代码示例:

@echo off
SetLocal

wmic process where (name="notepad.exe") get ProcessId | find /i "ProcessId" >nul 2>&1
if ERRORLEVEL 1 (
    rem 执行启动命令
)

EndLocal

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值