为什么要拿到当前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%
...