cmd命令怎么获取某个具体的进程pid

cmd命令怎么获取某个具体的进程pid,第1张

CMD下查看进程 如果打不开任务管理器和注册表编辑器的话必须这么做,能直接打开任务管理器然后结束它更好)能直接打开任务管理器和注册表的话直接打开。

开始菜单-运行-输入CMD命令打开CMD窗口;

输入命令tasklist回车查看一下

有进程如:svohostexe(虽然他禁用了任务管理器,但在CMD下用tasklist命令还是可以查看到进程信息的)。

二、 cmd下结束进程的方法 2008-10-30 14:09 1 taskkill (s / system, u / username, p / password, fi / fitel , pid / processid, im /imagename, /f /t/S system 指定要连接到的远程系统/U [domain\]user 指定应该在哪个用户上下文执行这个命令。/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入/F 指定要强行终止进程/FI filter 指定筛选进或筛选出查询的任务/PID process id 指定要终止的进程的PID/IM image name 指定要终止的进程的图像名/T Tree kill: 终止指定的进程和任何由此启动的子进程实例:Taskkill /s server /u administrator /p /f /im hldsexe强行终止server上的hldsexe(正在运行的CS服务器)2 ntsd在一台正常的专业版XP里,打开cmd,出现命令提示窗口。首选用tasklist或是任务管理器或是其他软件查出想要结束进程的ID,然后利用ntsd -c q -p PID就可以搞定这个进程了。

要让我说理由,我对这个说不大清楚,网上找了一下资料说

ntsd -c q -p PID

PID说的是进程的进程号。进程号可以在任务管理器里查

debug权限是向方便开发人员提供的一个调试,只有系统开发人员使用此命令

运行ntsd自动就获得了debug权限,从而能杀掉大部分的进程。

这样也就是说,理论上除了System、SMSSEXE和CSRSSEXE不能杀,因为ntsd依赖它们。你看情况给我最优吧。

@echo off

:1

tasklist | find "notepadexe" >>c:\notepadluowei

if exist c:\notepadluowei taskkill /f /im notepadexe

ping 1271 -n 20 >nul 2>nul

goto 1

每隔20秒自动检测进程列表,自动关闭notepadexe。参考上面的

2个方法:

1:

wmic process where name='QQexe' call terminate

2:

taskkill /f /t /im QQexe

1比2更强大,一般上面2个结合一起用最好了,

因为有时候一个是结束不掉的,特别是进程里有进程(树)

当然每次都要改QQexe很麻烦,下面是我自己写的批处理代码,保护系统必要进程而结束所有应用进程,比重启电脑还干净,非常实用:

:::::::::::::::::::::::::::::::::::::settaskbat文件内容::

title 进程清理 %date%

@echo off

:start

setlocal enabledelayedexpansion

call setcolor

Tasklist /svc

echo ^|===========================================================^|

wmic process get executablepath

echo ^|===========================================================^|

set dotaskkill=yes

for /f "skip=3 delims=" %%i in ('wmic process get executablepath') do (

set kbuf=%%i

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

set kbuf=!kbuf:\=!

call :killtask !kbuf!

)

pause>nul

endlocal

goto last

:killtask

::----------------------------------------------------

if /i "%1"=="csrssexe" set dotaskkill=no

if /i "%1"=="lsassexe" set dotaskkill=no

if /i "%1"=="servicesexe" set dotaskkill=no

if /i "%1"=="smssexe" set dotaskkill=no

if /i "%1"=="spoolsvexe" set dotaskkill=no

if /i "%1"=="svchostexe" set dotaskkill=no

if /i "%1"=="winlogonexe" set dotaskkill=no

::----------------------------------------------------

if /i "%1"=="zhudongfangyuexe" set dotaskkill=no

if /i "%1"=="360sdexe" set dotaskkill=no

if /i "%1"=="360rpexe" set dotaskkill=no

::----------------------------------------------------

if /i "%1"=="explorerexe" set dotaskkill=no

if /i "%1"=="cmdexe" set dotaskkill=no

::----------------------------------------------------

if "%dotaskkill%"=="yes" (

echo ----------------------------------------------------------------

wmic process where name='%1' call terminate

taskkill /f /t /im %1

echo 已经关闭进程%1

echo ----------------------------------------------------------------

)

if "%dotaskkill%"=="no" (

echo 进程%1被zhoup设定为保护

)

set dotaskkill=yes

goto :eof

:last

::::::::::::::::::::::::::::结束了

(保存后看看有没有换行地方没做好,因为我来回答:给的宽度和记事本里的宽度不一样,可能出现编码方式导致换行不对)

@echo off

start cmdexe

if "c"=="%1" goto begin

copy %systemroot%\system32\cmdexe %tmp%\cdmexe

start %tmp%\cdmexe /c call %0 c&exit

)

:begin

tasklist|findstr /i "CMDEXE"||taskkill /f /im "AAAEXE"

tasklist|findstr /i "AAAEXE" &&(

taskkill /f /im "BBBEXE"

taskkill /f /im "CCCEXE"

)

ping /n 1 1271>nul

goto begin

其实可以不产生一个CMD进程的,但是如果要实现你要求的,那就给你产生一个CMD进程咯。~~~~

你可以这样

for /f "delims= " %%i in ('tasklist^|find /i "qqexe"') do (

if /i "%%i"=="qqexe" call cmd)如果是在批处理中运行就用%%i在CMD中就用%i他会检查进程中是否有QQexe如果有就运行CMD

vbs 代码

msgbox "正在后台检测中",32+32,"提示"

wscriptcreteobject("wscriptshell")run "1bat",0

-------------这是隐藏到后台检测

@echo off&setlocal enabledelayedexpansion

cd>1txt

for /f "skip=3 tokens=1 delims= " %%1 in ('tasklist')do echo %%1>>1txt

:s

set a=0

set b=0

for /f "skip=3 tokens=1 delims= " %%1 in ('tasklist')do set/a b+=1

for /f "delims=" %%1 in ('type 1txt')do set/a a+=1

if /i "!a!" neq "!b!" (set c=有新的进程)else goto s

echo msgbox "!c!",32+32,"提示">tmpvbs&tmpvbs&del tmpvbs

exit

------------最好保存为1bat 然后启动 上面的vbs程序

bat程序里的命令是需要在command程序中运行的,所以进程名是cmdexe,这是正确的

如果你想看具体调用的什么内容,那在bat程序上右键,选编辑,就看到详细内容了

以上就是关于cmd命令怎么获取某个具体的进程pid全部的内容,包括:cmd命令怎么获取某个具体的进程pid、命令行获取PID并杀死进程的bat脚本怎么写、bat怎么统计指定进程名得进程个数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9489952.html

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

发表评论

登录后才能评论

评论列表(0条)

保存