跳到主要内容

使用 VBS 自动杀死 PicGo 进程的解决方案

背景

在日常文档管理中,我采用了 Typora + PicGo + MinIO 的组合来高效管理图片与文档:

  • Typora 是一款简洁的 Markdown 编辑器,支持实时预览。
  • PicGo 用于自动将图片上传到 MinIO,并将生成的链接转换为 Markdown 格式,方便直接粘贴到 Typora 中。
  • MinIO 是一个高性能的对象存储服务,用来存储上传的图片。

通过这个组合,我能够轻松地管理文档与图片。然而,PicGo 存在一个问题:运行一段时间后会出现卡死现象,导致图片无法正常上传。这迫使我频繁手动杀掉 PicGo 的进程并重新启动,极大影响了工作效率。

为了解决这个问题,我编写了一个 VBS 脚本,实现了 自动杀死 PicGo 进程 的功能,确保图片上传的顺畅。


脚本实现

以下是脚本的核心功能:

  1. 每隔 10 分钟检查一次是否存在 PicGo 进程,若存在则杀掉它。
  2. 若未找到 PicGo 进程,等待 30 分钟后再次检查。
  3. 将脚本的运行情况记录到 result.log 文件中。

脚本代码

On Error Resume Next

Set objShell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Dim enableLogging
enableLogging = True ' 设置为 False 可关闭日志输出

Do While True
Dim colProcesses, objProcess, processFound
processFound = False

' 查找名为 PicGo 的进程
Set colProcesses = objWMIService.ExecQuery("Select * From Win32_Process Where Name = 'PicGo.exe'")

For Each objProcess in colProcesses
processFound = True
' 终止进程
objProcess.Terminate
If enableLogging Then WriteLog "Process terminated: PicGo.exe"
Next

If Not processFound Then
If enableLogging Then WriteLog "Process not found: PicGo.exe,waiting for 15 minutes"
' 等待 30 分钟 (1800000 毫秒)
WScript.Sleep 1800000
Else
' 等待 10 分钟 (600000 毫秒)
WScript.Sleep 600000
End If
Loop

Sub WriteLog(message)
Dim fso, logFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set logFile = fso.OpenTextFile("D:\\result.log", 8, True)
logFile.WriteLine Now & " - " & message
logFile.Close
End Sub

如何使用脚本

1. 保存脚本

将上述代码保存为一个 .vbs 文件(例如 KillPicgo.vbs)。

2. 设置开机自启

为了让脚本在开机时自动运行,可以选择以下方法:

方法 1:将脚本放入启动文件夹

  1. Win + R,输入 shell:startup,然后按回车打开启动文件夹。
  2. KillPicgo.vbs 文件复制到该文件夹中。

方法 2:使用任务计划程序

  1. 打开“任务计划程序”,点击右侧的“创建任务”。
  2. 配置任务名称(例如 KillPicgoTask),并勾选“使用最高权限运行”。
  3. 在“触发器”选项卡中设置为“在登录时”触发。
  4. 在“操作”选项卡中,选择“启动程序”,并填写:
    • 程序或脚本:wscript.exe
    • 添加参数:C:\路径\到\KillPicgo.vbs
  5. 保存任务。

日志功能

脚本会将运行情况记录到 result.log 文件中,包括:

  1. 成功终止 PicGo 进程的记录。
  2. 未找到 PicGo 进程时的提示。

如果脚本稳定运行,可以通过设置 enableLogging = False 来关闭日志功能。


总结

通过该脚本,我成功解决了 PicGo 卡死问题,大大提升了图片上传的效率。这一自动化解决方案简单高效,不仅适用于 PicGo,还可以扩展到其他需要定时检测并处理的场景。如果你也遇到了类似问题,不妨试试这个方法!