cmd如何判断程序是否运行?

cmd如何判断程序是否运行?,第1张

cmd是 command的缩写.即 命令提示符(CMD),是在OS / 2 , Windows CE与Windows NT平台为基础的 *** 作系统(包括Windows 2000和XP中, Vista中,和Server 2003 )下的“MS-DOS 方式”。中文版Windows XP 中的命令提示符进一步提高了与DOS 下 *** 作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。

asklist >a.txt<回车>type a.txt | find /i "%进程名%" &&goto b<回车>第一句是将当前进程保存到文件,第二句是检测进程是否运行,是否跳转到B处运行。

tasklist /nh>d:\1.txt   find /i "QQ.exe" d:\1.txt if ERRORLEVEL 1 ("C:\software\Tencent\qq\QQQ.exe" ) else (exit)      意思是检测"QQ.EXE"有没有在进程里,大家都知道QQ打开后进程名是"QQ.EXE"如果有在进程里则执行"EXIT"退出,如果没有在进程里,说明QQ没有打开,则运行QQ程序"C:\software\Tencent\qq\QQQ.exe"       第二种写法     tasklist /nh|find /i "QQ.exe" if ERRORLEVEL 1 ("C:\software\Tencent\qq\QQQ.exe") else (exit)

们运用dos命令查看进程信息。首先我们打开电脑左下角菜单栏目,输入cmd

在菜单运行栏目里面输入cmd命令后,会显示命令行信息我们就让dos窗口。

我们利用命令行wmic命令来开启查看系统进程的权限,进行查看当前运行的进程。

接着我们在dos窗口可以看到此时会d出一个wmic:root\cli>命令,

我们在命令行wmic:root\cli>后面输入process命令来开启查看当前系统进程情况。

如果我们当前的进程比较多一页看不完,我们还可以点进右方的滚动条,进行下拉查看更多进程信息。

我们也可以使用任务管理器来查看但是查看的列表进程没有用命令行详细,所有我们最好时候命令行来查看。

DOS中判断进程是否存在的方法

检测进程是否存在,并做出预定动作。

tasklist /nh>d:\tddown~1\1.txt

find /i "QQ.exe" d:\tddown~1\1.txt

if ERRORLEVEL 1 (echo qq.exe不存在) else (echo qq.ex存在)

------------第二个-----------

tasklist /nh|find /i "QQa.exe"

if ERRORLEVEL 1 (echo qqa.exe不存在) else (echo qqa.exe存在)

检查电脑里有没QQ.EXE进程,有则自动结束

a)、先用tasklist 输入进程列表给find ,让find找出qq.exe进程,如果找到,那执行下面的结束 *** 作,找不到就退出bat

@echo off

tasklist|find /i "qq.exe" ||exit

taskkill /im qq.exe /f

b)、把进程列表放在A文档里面然后再用FIND查找代码:

@echo off

tasklist>C:\a.txt

find "QQ.exe" C:\a.txt&&taskkill /f /im "QQ.exe"

c)、如果不是要循环监控的话,直接taskkill。。。反正最终目的是不要有QQ进程。

每隔20秒自动检测进程列表,自动关闭notepad.exe。

@echo off

:1

tasklist | find "notepad.exe" >>c:\notepad.luowei

if exist c:\notepad.luowei taskkill /f /im notepad.exe

ping 127.1 -n 20 >nul 2>nul

goto 1

检测explorer.exe进程

检测explorer.exe进程,发现有这个进程就退出,没有就从E盘复制一个到系统目录,再运行。

我系统经常进不去,发现就是被病毒发explorer.exe文件删了。

tasklist|find /i "explorer.exe"||copy /y e:\drivers\explorer.exe %systemroot%\&&start /b explorer.exe

每30秒检测一个进程的运行,如果不存在电脑重启。

@echo off

rem 重启应该使用-r

tasklist|findstr /i "explorer.exe" ||shutdown -r -t 50

rem willsort斑竹说过,ping的第一条消息是不需要等待的,所以延时30秒,应该用-n 31

ping 127.1 -n 31 >nul 2>nul

rem 不必使用循环,call一下自己就行了

call %0

检测系统的一个进程是否存在的脚本, 如果不存在,就自动关机.

tasklist >tasklist.txt

rem 进程名如 smss.exe

find /i tasklist.txt "进程名"

if errorlevel 1 ((del /q tasklist.txt)&(goto end))

if errorlevel 0 ((del /q tasklist.txt)&(echo 有你想要的进程)&pause&exit)

:end

shutdown -s -t 1

不过这样只有这个bat运行一次检测一次,没有实时监控

用Goto 语句做 监测

:start

tasklist >tasklist.txt

find /i tasklist.txt "Explorer.exe"

if errorlevel 1 ((del /q tasklist.txt)&(goto end))

if errorlevel 0 ((goto start))

:end

shutdown -s -t 50

这样一来 如果Explorer.exe 进程,存在, 就是死循环.

直到 Explorer.exe 进程结束, 就执行 关机命令.

但这样有个缺点 CPU 100%

检测多个特定进程

我想实现这样一个功能:用tasklist列出当前进程清单,然后用find来搜索进程中是否含有1.exe,2.exe,3.exe......(假设啊)如果清单中含有其中一个就执行某个 *** 作。我想用FOR来实现循环可是怎么试也不行啊!!我是这样试的:

tasklist | for %%j in (1.exe,2.exe,3.exe) do find "%%j" &&goto :p

find是不是不能用for啊?请高人指点。

---------

tasklist | findstr "1.exe 2.exe 3.exe"&&goto :p

for不会接受传递自tasklist的数据,它是打in来定义的

---------

@echo off

set 1.exe=被定义的程序

set 2.exe=被定义的程序

set 3.exe=被定义的程序

for /f "tokens=1" %%i in ('tasklist /NH') do (

if defined %%i echo %%i

)

pause>nul

---------

检测和退出进程问题

A B 两进程存在,若A不存在,则退出B。每隔N秒循环检测一次,退出B后,退出程序

tasklist|findstr /i "A.exe" ||(taskkill /im B.exe /t /f&exit)

列出当前运行的进程,可自定义说明内容,手动关闭进程。

可改良后自动判断处理进程。

@echo off

PATH=C:\WINDOWS\system32C:\WINDOWSC:\WINDOWS\System32\WbemC:\Program Files\HPQ\IAM\bin

title 进程分析自定义结束进程程序

echo 按任意键开始分析

pause>nul

set space=

echo.

echo 程序分析如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12074739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存