Bat 脚本实现监测程序进而定时关机

在linux虚拟机里跑任务,可以在sh脚本里把命令一个个按顺序先写好后,把关机命令power off放在最后。这样可以当任务结束后虚拟机自动关机。但这样无法设置虚拟机外部的windows主机关机。

这里写了一个bat脚本,可以对运行的虚拟机程序进行定时监测,如果虚拟机程序结束了,就进行关机命令。

脚本autoshutdown.bat内容如下:

bash 复制代码
@echo off

set _task = vmware-vmx.exe

:checkService
choice /t 30 /d y /n >nul
tasklist|find /i "vmware-vmx.exe"
if %errorlevel%==0 (
	echo. program % _task% is running.
	call:checkMessage
) else (
	echo. program % _task% is over.
	call:poweroffService
)


:checkMessage
echo %time% 程序运行正常,20秒后继续检查.. >> C:\Users\ff\Desktop\autoshutdownlog.txt
call:checkService


:poweroffService
echo %time% 
echo ********PC will be power off after 1 min********
echo The last time of PC shutdown  is %time%  >> C:\Users\ff\Desktop\autoshutdownlog.txt
shutdown /s /f /t 60
cls
exit

这里用set 命令将监测的程序vmware-vmx.exe 定义为变量**_task**。

建立了3个自定义函数**:checkService** ,:checkMessage ,:poweroffService

在**:checkService** 函数里,用choice 命令设置了等待时间30秒,30秒后运行后面的tasklist 命令在运行的任务中查找任务vmware-vmx.exe 。如果任务存在,变量errorlevel 返回0,如果不存在errorlevel变量返回1。基于此建立if和else语句。

用**:checkMessage** 将内容记录到日志文件中,用call 命令返回到函数**:checkService**里继续监测。

最后如果任务vmware-vmx.exe 结束,用call 命令调用**:poweroffService**函数运行shutdown命令进行主机关机。

参考:

Bat 脚本实现监控进程功能-CSDN博客

相关推荐
wdfk_prog14 分钟前
[Linux]学习笔记系列 -- lib/dump_stack.c 栈回溯打印(Stack Trace Dumping) 内核调试与错误诊断的基石
linux·运维·服务器·c语言·笔记·学习
i.ajls16 分钟前
无监督学习,推荐系统以及强化学习笔记
笔记·学习·机器学习
dragoooon3424 分钟前
[优选算法专题二滑动窗口——串联所有单词的子串]
数据结构·c++·学习·算法·leetcode·学习方法
向阳花开_miemie29 分钟前
Android音频学习(十七)——音频数据流转
学习·音视频
Brookty1 小时前
【算法】双指针(二)复写零
学习·算法
滴滴滴嘟嘟嘟.2 小时前
Qt UDP通信学习
qt·学习·udp
努力的小帅2 小时前
C++_哈希
开发语言·c++·学习·算法·哈希算法·散列表
zzZ65652 小时前
支持向量机(SVM)学习报告
学习·机器学习·支持向量机
Hello_Embed12 小时前
STM32HAL 快速入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
笔记·stm32·单片机·嵌入式硬件·学习
天上的光12 小时前
关于学习的一些感悟
学习