一、首先新建一个.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" 的批处理脚本。这意味着批处理脚本将在后台运行,用户不会看到命令提示符窗口。