一、首先新建一个.txt文件,例:Deamon.txt
二、打开新建的.txt文件并将如下代码进行填入,这段代码是一个批处理脚本,用于守护进程("SSCOM33")的运行,如果进程停止,它会自动重新启动。
@echo off
::检测时间间隔,单位:秒
set _interval=5
::需要守护的进程名称
set _processName=SSCOM33
:loop
::检查进程是否运行
tasklist | find "sscom33.exe" > nul
if %errorlevel% neq 0 (
echo Start %_processName%-%time%
start "" "F:\sscom33.exe"
)
::等待一段时间再次检查
timeout /t %_interval% /nobreak > nul
goto loop
上述代码详细解释:
@echo off: 这句代码关闭了命令回显,使得在执行过程中不会在命令提示符窗口中显示命令本身。
set _interval=5: 这句代码定义了一个变量 _interval,用于设置循环检查进程状态的间隔时间,这里设置为 5 秒。
set _processName=SSCOM33: 这句代码定义了一个变量 _processName,用于存储进程的名称,这里设置为 "SSCOM33"。(名称为自己任意设定的)
:loop: 这是一个标签,用于创建一个无限循环。
tasklist | find "sscom33.exe" > nul: 这句代码使用 tasklist 命令列出所有正在运行的进程,然后通过管道 | 将输出传递给 find 命令,查找包含 "sscom33.exe" 的行。通过将输出重定向到 nul,只关心命令是否成功执行,不在意输出内容。
if %errorlevel% neq 0: 这是一个条件语句,检查上一个命令的退出码(%errorlevel%)。如果 tasklist | find 命令未找到进程(即退出码不等于 0),则表示进程停止。
在条件成立的情况下(即进程停止),脚本会使用 echo 命令打印消息,然后使用 start 命令重新启动进程。
timeout /t %_interval% /nobreak > nul: 这句代码使用 timeout 命令暂停脚本的执行,持续一段时间(由 _interval 变量定义),然后再次进行下一轮循环。/nobreak 参数表示用户无法通过按下键盘来终止暂停。
goto loop: 这句代码使脚本跳转回标签 :loop 处,从而创建了一个无限循环,实现了进程守护的功能。
三、保存为一个 (.bat) 文件,例如:Deamon.bat:
需要注意的是:本人守护的进程为“sscom33.exe”,文件目录为“F:\sscom33.exe”,根据自己需求进行更改。
四、(若需要脚本在后台运行)用户不会看到命令提示符窗口。需要将下面两句代码保存为扩展名为.vbs的文件,然后和上述.bat放在同一目录下,双击运行。
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "deamon.bat",0
上述代码详细解释:
这两句代码是用于在 Windows 脚本宿主(WSH)环境中运行的,用于执行名为 "deamon.bat" 的批处理脚本。
set ws=WScript.CreateObject("WScript.Shell"): 这句代码创建了一个名为 ws 的 WScript.Shell 对象。WScript.Shell 是 Windows 脚本宿主中的一个对象,它允许你在脚本中执行各种操作,包括运行程序、访问环境变量、创建快捷方式等。
ws.Run "deamon.bat",0: 这句代码使用 Run 方法来运行名为 "deamon.bat" 的批处理脚本。0 参数表示以隐藏的方式运行程序,即在后台执行,不会显示命令提示符窗口。
总结起来,这两句代码的作用是创建一个 WScript.Shell 对象,然后使用该对象的 Run 方法以隐藏方式运行名为 "deamon.bat" 的批处理脚本。这意味着批处理脚本将在后台运行,用户不会看到命令提示符窗口。