获取当前进程 pid 的技巧,输出到文本:- @wmic process where name="wmic.exe" get ParentProcessId /value>PID.txt
复制代码 不能放在 for /f 中运行,因为这样取到的父进程 PID 不是当前进程
如果有文件夹洁癖,不想使用临时文件的话,可以玩个结构:- %1 @wmic process where name="wmic.exe" get ParentProcessId /value | %0 : & exit /b
- ::通过管道交给自身处理,被调用时此句被屏蔽
-
- @echo off
- for /f "delims=" %%a in ('more') do set /a "%%a" 2>nul
- ::取得管道输入,用 set /a 简单过滤输出中的回车符,并赋值
-
- echo %parentprocessid%
- ::parentprocessid 即使最初的 cmd.exe 的 pid
-
- pause<con
- ::因为在管道中,输入句柄得重定向到 stdin
-
- if 时间==[时间] taskkill /t /f /pid %parentprocessid%
- ::若条件符合,则结束指定 pid 及其所有子进程,包括 cmd.exe 和 ftp.exe
复制代码 不过个人建议还是用临时文件比较方便易读 |