一、脚本检测进程
使用批处理脚本检测程序是否在运行,可以使用tasklist命令来列出当前运行的所有进程,并通过findstr命令来搜索特定的进程名。下面是一个简单的批处理脚本示例,它会检测指定的程序是否在运行,并给出相应的信息:
@echo off
setlocal
:: 设置要检测的程序名称
set "program_name=your_program_name.exe"
:: 使用tasklist命令查找程序
tasklist /FI "IMAGENAME eq %program_name%" | findstr /I /C:"%program_name%">nul
:: 检查findstr命令的退出码来确定是否找到了程序
if %errorlevel% equ 0 (
echo 程序 %program_name% 正在运行。
) else (
echo 程序 %program_name% 没有在运行。
)
endlocal
在这个脚本中:
- %program_name% 变量设置了你想要检测的程序名称。
- tasklist /FI “IMAGENAME eq %program_name%” 命令会列出所有与指定名称匹配的进程。
- findstr /I /C:“%program_name%”>nul 命令用于搜索tasklist的输出,并忽略大小写(/I参数)和只检查是否存在指定的字符串(/C:参数)。>nul表示将输出重定向到nul,也就是说不显示任何输出,只设置退出码。
- %errorlevel% 是一个特殊的变量,它包含了上一个命令的退出码。findstr命令如果找到了匹配的字符串,会返回0作为退出码;如果没有找到,会返回1。
- if %errorlevel% equ 0 判断findstr命令是否成功找到了程序。如果是,则输出“程序正在运行”;否则,输出“程序没有在运行”。
请确保将your_program_name.exe替换为你实际要检测的程序名称。如果程序名称包含路径或参数,请确保在tasklist命令中正确地包含它们。
这个脚本简单易懂,但请注意,批处理脚本在处理进程管理时可能不是最强大的工具。如果你需要更复杂的逻辑或更好的控制能力,考虑使用PowerShell或其他更高级的脚本语言。
二、测试代码
检测(格西烽火工具)Beacon.exe的进程是否存在,并将检测结果打印出来。
@echo off
setlocal
:: 设置要检测的程序名称
set "program_name=Beacon.exe"
:: 使用tasklist命令查找程序
tasklist /FI "IMAGENAME eq %program_name%" | findstr /I /C:"%program_name%">nul
:: 检查findstr命令的退出码来确定是否找到了程序
if %errorlevel% equ 0 (
echo 程序 %program_name% 正在运行。
) else (
echo 程序 %program_name% 没有在运行。
)
endlocal
pause
打开软件,启动脚本,测试结果
关闭软件,启动脚本,测试结果