DOS中判断进程是否存在的方法
?
這里分享的主要是通過批處理中先判斷進(jìn)程是否存在,然后再做出操作的實(shí)現(xiàn)代碼,需要的朋友可以參考下檢測進(jìn)程是否存在,并做出預(yù)定動(dòng)作。
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存在)
------------第二個(gè)-----------
tasklist?/nh|find?/i?"QQa.exe"
if?ERRORLEVEL?1?(echo?qqa.exe不存在)?else?(echo?qqa.exe存在)
檢查電腦里有沒QQ.EXE進(jìn)程,有則自動(dòng)結(jié)束
a)、先用tasklist?輸入進(jìn)程列表給find?,讓find找出qq.exe進(jìn)程,如果找到,那執(zhí)行下面的結(jié)束操作,找不到就退出bat
@echo?off
tasklist|find?/i?"qq.exe"?||exit
taskkill?/im?qq.exe?/f
b)、把進(jìn)程列表放在A文檔里面然后再用FIND查找代碼:
@echo?off
tasklist>C:\a.txt
find?"QQ.exe"?C:\a.txt&&taskkill?/f?/im?"QQ.exe"
c)、如果不是要循環(huán)監(jiān)控的話,直接taskkill。。。反正最終目的是不要有QQ進(jìn)程。
每隔20秒自動(dòng)檢測進(jìn)程列表,自動(dòng)關(guān)閉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進(jìn)程
檢測explorer.exe進(jìn)程,發(fā)現(xiàn)有這個(gè)進(jìn)程就退出,沒有就從E盤復(fù)制一個(gè)到系統(tǒng)目錄,再運(yùn)行。
我系統(tǒng)經(jīng)常進(jìn)不去,發(fā)現(xiàn)就是被病毒發(fā)explorer.exe文件刪了。
tasklist|find?/i?"explorer.exe"||copy?/y?e:\drivers\explorer.exe?%systemroot%\&&start?/b?explorer.exe
每30秒檢測一個(gè)進(jìn)程的運(yùn)行,如果不存在電腦重啟。
@echo?off
rem?重啟應(yīng)該使用-r
tasklist|findstr?/i?"explorer.exe"?||shutdown?-r?-t?50
rem?willsort斑竹說過,ping的第一條消息是不需要等待的,所以延時(shí)30秒,應(yīng)該用-n?31
ping?127.1?-n?31?>nul?2>nul
rem?不必使用循環(huán),call一下自己就行了
call?%0
檢測系統(tǒng)的一個(gè)進(jìn)程是否存在的腳本,?如果不存在,就自動(dòng)關(guān)機(jī).
tasklist?>tasklist.txt
rem?進(jìn)程名如?smss.exe
find?/i?tasklist.txt?"進(jìn)程名"
if?errorlevel?1?((del?/q?tasklist.txt)&(goto?end))
if?errorlevel?0?((del?/q?tasklist.txt)&(echo?有你想要的進(jìn)程)&pause&exit)
:end
shutdown?-s?-t?1
不過這樣只有這個(gè)bat運(yùn)行一次檢測一次,沒有實(shí)時(shí)監(jiān)控
用Goto?語句做?監(jiān)測
: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?進(jìn)程,存在,?就是死循環(huán).
直到?Explorer.exe?進(jìn)程結(jié)束,?就執(zhí)行?關(guān)機(jī)命令.
但這樣有個(gè)缺點(diǎn)?CPU?100%
檢測多個(gè)特定進(jìn)程
我想實(shí)現(xiàn)這樣一個(gè)功能:用tasklist列出當(dāng)前進(jìn)程清單,然后用find來搜索進(jìn)程中是否含有1.exe,2.exe,3.exe......(假設(shè)啊)如果清單中含有其中一個(gè)就執(zhí)行某個(gè)操作。我想用FOR來實(shí)現(xiàn)循環(huán)可是怎么試也不行啊!!我是這樣試的:
tasklist?|?for?%%j?in?(1.exe,2.exe,3.exe)?do?find?"%%j"?&&?goto?:p
find是不是不能用for啊?請高人指點(diǎn)。
---------
tasklist?|?findstr?"1.exe?2.exe?3.exe"&&goto?:p
for不會接受傳遞自tasklist的數(shù)據(jù),它是打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
---------
檢測和退出進(jìn)程問題
A B 兩進(jìn)程存在,若A不存在,則退出B。每隔N秒循環(huán)檢測一次,退出B后,退出程序
tasklist|findstr?/i?"A.exe"?||(taskkill?/im?B.exe?/t?/f&exit)
列出當(dāng)前運(yùn)行的進(jìn)程,可自定義說明內(nèi)容,手動(dòng)關(guān)閉進(jìn)程。
可改良后自動(dòng)判斷處理進(jìn)程。
?
@echo?off
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program?Files\HPQ\IAM\bin
title?進(jìn)程分析自定義結(jié)束進(jìn)程程序
echo?按任意鍵開始分析
pause>nul
set?space=
echo.
echo?程序分析如下:
echo?=========================================================================
echo.
echo?進(jìn)程名稱?進(jìn)程說明
echo.
call?tasklist.exe
::以下定義程序說明,自己可以補(bǔ)充。
set?System=『系統(tǒng)進(jìn)程』
set?smss.exe=『系統(tǒng)進(jìn)程』調(diào)用對話管理子系統(tǒng)和負(fù)責(zé)操作你系統(tǒng)的對話
set?csrss.exe=『系統(tǒng)進(jìn)程』管理Windows圖形相關(guān)任務(wù)
set?winlogon.exe=『系統(tǒng)進(jìn)程』
set?services.exe=『系統(tǒng)進(jìn)程』管理啟動(dòng)和停止服務(wù)
set?lsass.exe=『系統(tǒng)進(jìn)程』用于本地安全和登陸策略
set?svchost.exe=『系統(tǒng)進(jìn)程』用來運(yùn)行動(dòng)態(tài)鏈接庫dll文件
set?ctfmon.exe=·提供語音識別、手寫識別等
set?conime.exe=·輸入法編輯器相關(guān)程序
::主程序
setlocal?enabledelayedexpansion
for?/f?"tokens=1"?%%i?in?('tasklist?/NH')?do?(
set?str=%%i?%space%
set?str=!str:~0,20!
if?defined?%%i?(echo?!str!?!%%i!)?else?echo?!str!?‖根據(jù)進(jìn)程自已輸進(jìn)程名)
echo?=========================================================================
echo?分析完畢...
:goto?title
title?結(jié)束進(jìn)程
set?/p?run=請輸入要結(jié)束的程序名
::ntsd?-c?q?-pn?%run%
taskkill?/f?/t?/im?%run%
pause>nul?先分析PID和進(jìn)程。然后自定義結(jié)束
--------------------------------------------------------------------------------
當(dāng)使用?echo?命令時(shí),要顯示管道?(|)?或重定向字符(<?或?>),請?jiān)诠艿?(|)?或重定向字符(例如,^>、^<?或?^|)的前面使用脫字符?(^)。如果需要使用脫字符?(^),請鍵入兩個(gè)脫字符?(^^)。
||
Usage:
第一條命令?||?第二條命令?[||?第三條命令...]
用這種方法可以同時(shí)執(zhí)行多條命令,當(dāng)碰到執(zhí)行正確的命令后將不執(zhí)行后面的命令,如果沒有出現(xiàn)正確的命令則一直執(zhí)行完所有命令;
Sample:
D:\TDDownload>dir?*.txt||ren?1.txt?3.txt&&dir?*.txt
驅(qū)動(dòng)器?D?中的卷是?Application
卷的序列號是?B445-F155
D:\TDDownload?的目錄
2008-01-26?15:35?229?1.txt
2008-01-26?15:35?229?2.txt
2008-01-26?15:35?229?第三只眼.txt
3?個(gè)文件?687?字節(jié)
0?個(gè)目錄?7,510,728,704?可用字節(jié)
D:\TDDownload>dir?3.txt||ren?1.txt?3.txt&&dir?*.txt
驅(qū)動(dòng)器?D?中的卷是?Application
卷的序列號是?B445-F155
D:\TDDownload?的目錄
找不到文件
驅(qū)動(dòng)器?D?中的卷是?Application
卷的序列號是?B445-F155
D:\TDDownload?的目錄
2008-01-26?15:35?229?2.txt
2008-01-26?15:35?229?3.txt
2008-01-26?15:35?229?第三只眼.txt
3?個(gè)文件?687?字節(jié)
0?個(gè)目錄?7,510,728,704?可用字節(jié)
D:\TDDownload>?
轉(zhuǎn)載于:https://www.cnblogs.com/pejsidney/p/8258833.html
總結(jié)
以上是生活随笔為你收集整理的DOS中判断进程是否存在的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorflow中2D卷积API使用
- 下一篇: 蓄水池采样(Reservoir Samp