为什么要拿到当前cmd.exe的pid这种无聊的事情呢?
我自己在研究这类脚本的时候还真是有目的。那就是我希望脚本把调用者kill掉。
脚本获取父进程的PID,然后执行tskill。于是造就了一个看似没用的自杀脚本。
其实除了自杀,还可以杀父进程,再父进程,一路全杀光,哈哈哈。
当然后续扩展也不尽全是杀进程,还可以查看进程状态/信息等功能(参考wmic,网上有很多)。
@ echo off
title=mycmd
tasklist /v /fo csv | findstr /i "mycmd"
title=mycmd
tasklist /v /fo csv | findstr /i "mycmd"
方法2) 原理:利用wmic的筛选出自己的pid,再拿到wmic的父进程(即cmd.exe)的pid。(该脚本强大之处在于可以无限获取父进程的父进程,"REM get cmd ppid"之后就是)
@ echo off
REM get cmd pid
set TempFile=%TEMP%\sthUnique.tmp
wmic process where (Name="wmic.exe" AND CommandLine LIKE "%%%TIME%%%") get ParentProcessId /value | find "ParentProcessId" >%TempFile%
set /P _string=<%TempFile%
set _pid=%_string:~16%
echo %_pid%
REM get cmd ppid
wmic process where (processid=%_pid%) get ParentProcessId /value | find "ParentProcessId" >%TempFile%
set /P _string=<%TempFile%
set _pid=%_string:~16%
echo %_pid%
...
REM get cmd pid
set TempFile=%TEMP%\sthUnique.tmp
wmic process where (Name="wmic.exe" AND CommandLine LIKE "%%%TIME%%%") get ParentProcessId /value | find "ParentProcessId" >%TempFile%
set /P _string=<%TempFile%
set _pid=%_string:~16%
echo %_pid%
REM get cmd ppid
wmic process where (processid=%_pid%) get ParentProcessId /value | find "ParentProcessId" >%TempFile%
set /P _string=<%TempFile%
set _pid=%_string:~16%
echo %_pid%
...
本文详细介绍了如何通过脚本获取当前cmd.exe的PID,并展示了这一技术在自杀脚本、杀父进程及扩展功能如查看进程状态等场景的应用。通过任务列表筛选与Windows管理指令(WMIC)的巧妙结合,实现自动化进程管理,为开发者提供了一套实用的技术解决方案。
4385

被折叠的 条评论
为什么被折叠?



