VBS脚本持续监测进程是否存在,不存在就启动该进程 —— 定时执行专家

文章提供了一个VBScript脚本【mon-proc.vbs】,用于监测指定进程(如notepad.exe)是否存在。如果进程不存在,脚本会启动它。通过结合‘定时执行专家’,可以设置间隔触发器(如每5分钟)来周期性检查目标进程,确保其持续运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

【需求的背景】

【如何循环监测】


【需求的背景】

需要一个vbs脚本来监测进程(例如:notepad.exe)是否存在。需要间隔一段时间来检查该进程是否存在。如果进程存在,脚本应该不执行任何操作。如果进程不存在,脚本会启动该程序。

以下是一个vbs脚本【mon-proc.vbs】的示例,它可以监测进程是否存在:

''
'' author: boomwxsoft/boomworks
'' 15:44 2023/4/13
'' 
'' usage: need two parameters, ex: "TimingExecutor.exe" "C:\TmExec\TimingExecutor.exe"
''

Dim objArgs
Set objArgs = WScript.Arguments

Dim processName
Dim processPath

processName = objArgs.Item(0)
processPath = objArgs.Item(1)

Set WshShell = WScript.CreateObject("WScript.Shell")
If Not ProcessExists(processName) Then
    WshShell.Run processPath
End If

Function ProcessExists(processName)
    Dim objWMIService, colProcesses, objProcess
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process Where Name ='" & processName & "'")
    If colProcesses.Count > 0 Then
        ProcessExists = True
    Else
        ProcessExists = False
    End If
End Function

在上面这个示例中,脚本会检查是否有名为“参数1”的进程正在运行。如果没有,则会打开“参数2”的程序(例如:notepad.exe)。

【如何循环监测】

需要上面的vbs脚本和“定时执行专家”配合使用。可以使用“定时执行专家”的【执行脚本或程序】来执行vbs脚本;触发器设置【间隔】触发器,本例子采用间隔5分钟方式触发vbs脚本任务的执行。

设置步骤:

1、新建”定时执行专家“的【执行脚本和程序】任务,选择上面的脚本文件【mon-proc.vbs】;

2、填写两个参数,参数间用空格隔开;

3、设置【间隔时间】触发器,例如:5分钟,见下图。

(图1-1,定时执行专家 - 执行vbs脚本) 

请注意,你需要将“notepad.exe”替换为你想要监测的进程的名称。

// END

### 使用 BAT 脚本监测特定进程 BAT 批处理脚本可以用来监控系统中的特定进程是否存在并采取相应措施。以下是基于提供的参考资料以及专业知识构建的一个完整的解决方案。 #### 基础概念 Windows 的批处理脚本支持通过 `tasklist` 命令来查询当前运行的进程列表,并可以通过条件判断语句(如 `if` 和 `findstr`)来验证目标进程存在状态[^2]。 --- #### 实现方案 下面是一个简单的示例,展示如何使用 `.bat` 文件来定期检查某个指定的进程是否正在运行: ```batch @echo off :loop :: 查询名为 "notepad.exe" 的进程是否存在 tasklist | find /i "notepad.exe" >nul && ( echo Notepad is running. ) || ( echo Notepad is not running. Starting it now... start "" "C:\Windows\System32\notepad.exe" ) :: 等待 5 钟后再重新检查 timeout /t 5 >nul goto loop ``` 上述代码的功能描述如下: - **`tasklist`**: 列出当前活动的所有进程。 - **`find /i "notepad.exe"`**: 查找名称为 `"notepad.exe"` 的进程,忽略大小写。 - **`&&` 和 `||`**: 如果找到该进程,则执行第一个括号内的命令;如果没有找到,则执行第二个括号内的命令。 - **`start`**: 启动记事本应用程序作为演示用途。 - **`timeout /t 5`**: 让脚本暂停 5 钟再继续循环。 此脚本持续运行,直到手动停止它为止。 --- #### 高级功能扩展 如果需要更加复杂的行为,比如记录日志或者发送通知邮件,可以在基础框架上进一步增强逻辑。例如: ##### 添加日志记录 修改后的版本会在每次检测到进程存在时向文本文件追加一条消息: ```batch @echo off set logFile=process_monitor.log :loop tasklist | find /i "notepad.exe" >nul && ( echo %date% %time% - Notepad is running >> "%logFile%" ) || ( echo %date% %time% - Notepad was NOT found! Restarting... >> "%logFile%" start "" "C:\Windows\System32\notepad.exe" ) timeout /t 5 >nul goto loop ``` 这里引入了一个变量 `%logFile%` 来存储日志路径,并利用重定向符 (`>>`) 将输出附加至指定的日志文件中。 --- #### 注意事项 尽管批处理脚本适合完成一些基本的任务自动化工作,但在某些场景下其局限性较为明显。例如,在多线程环境下的精确控制、跨平台兼容性和图形界面交互等方面表现较弱[^3]。因此,对于更高需的应用场合,建议采用 PowerShell 或其他现代化编程语言替代传统批处理方式。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值