bat批处理怎么反复检测一个进程是否存在 检测如果该进程存在则继续检测 直到进程关闭则执行关机命令
网上看了一些P处理但不适合我用像下面的p处理@echooff:searchtasklist|findstr"XDICT">1.txtrem"qq.exe"是要找的进程,找...
网上看了一些P处理 但不适合我用 像下面的p处理
@echo off
:search
tasklist|findstr "XDICT">1.txt
rem "qq.exe" 是要找的进程,找到就写入到1.txt文件中
for /f "tokens=1-4 delims= " %%a in ('"dir 1.txt|findstr "个文件""') do set /a size=%%c
if %size% gtr 0 (goto search) else exit
运行这个后 会在桌面上生成一个1.txt 的文件 而且它是检测不到就停止批处理 我要的是 开机后 一直检测 或者每隔一段时间检测一边 发现没有此进程 则关机
最好是批处理 或者vbs脚本 因为 运行时没有什么痕迹 如果是exe的话运行时要求在任务管理器中看不到
分就61了没办法啊 展开
@echo off
:search
tasklist|findstr "XDICT">1.txt
rem "qq.exe" 是要找的进程,找到就写入到1.txt文件中
for /f "tokens=1-4 delims= " %%a in ('"dir 1.txt|findstr "个文件""') do set /a size=%%c
if %size% gtr 0 (goto search) else exit
运行这个后 会在桌面上生成一个1.txt 的文件 而且它是检测不到就停止批处理 我要的是 开机后 一直检测 或者每隔一段时间检测一边 发现没有此进程 则关机
最好是批处理 或者vbs脚本 因为 运行时没有什么痕迹 如果是exe的话运行时要求在任务管理器中看不到
分就61了没办法啊 展开
3个回答
展开全部
rem 把此vbs放到“开始”菜单——程序——启动,以达到开机启动的目的
'要检查的进程名
strTargetExe = "anotepad.exe"
'10秒检查一次
intDelay = 10
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
strTargetExe = LCase(strTargetExe)
Do
WSH.Sleep 1000 * intDelay
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objProcess in colProcessList
If LCase(objProcess.Name) = strTargetExe Then
Set objWMIService = GetObject _
("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & _
strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Win32Shutdown(1)
Next
Exit Do
End If
Next
Loop Until False
'要检查的进程名
strTargetExe = "anotepad.exe"
'10秒检查一次
intDelay = 10
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
strTargetExe = LCase(strTargetExe)
Do
WSH.Sleep 1000 * intDelay
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objProcess in colProcessList
If LCase(objProcess.Name) = strTargetExe Then
Set objWMIService = GetObject _
("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & _
strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Win32Shutdown(1)
Next
Exit Do
End If
Next
Loop Until False
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
rem ping -n 60 127.1>nul 延时60秒
rem shutdown -s -f -t 0 没提示立即关机,需提示把0改成一个数字,单位是秒
@echo off
set app=qq.exe
:re
ping -n 60 127.1>nul
(tasklist|findstr "%app%">nul&&goto :re)||goto :sh
exit
:sh
shutdown -s -f -t 0
rem shutdown -s -f -t 0 没提示立即关机,需提示把0改成一个数字,单位是秒
@echo off
set app=qq.exe
:re
ping -n 60 127.1>nul
(tasklist|findstr "%app%">nul&&goto :re)||goto :sh
exit
:sh
shutdown -s -f -t 0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-06-08
展开全部
@echo off
set app=qq.exe
:re
ping -n 2 -w 500 127.1>nul
(tasklist|findstr "%app%">nul&&goto :re)||goto :sh
exit
:sh
shutdown -s -f -t 5
set app=qq.exe
:re
ping -n 2 -w 500 127.1>nul
(tasklist|findstr "%app%">nul&&goto :re)||goto :sh
exit
:sh
shutdown -s -f -t 5
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询