tasklist 的输出示例
C:\>tasklist
图像名 PID 会话名 会话# 内存使用
========================= ====== ================ ======== ============
System Idle Process 0 Console 0 28 K
System 4 Console 0 316 K
SMSS.EXE 748 Console 0 404 K
CSRSS.EXE 812 Console 0 5,844 K
WINLOGON.EXE 836 Console 0 3,044 K
SERVICES.EXE 880 Console 0 3,900 K
运行下面的, 你可以看到一批 *.exe 的进程信息- tasklist | findstr ".exe">QPID.log & notepad qpid.log
复制代码 如果运行的是下面的 (tasklist | findstr /i "qq.exe">QPID.log 注意: 参数 /i 的重要性, 你贴的原始代码中没有这个参数, 那样不能忽略大小写)- tasklist | findstr /i "qq.exe">QPID.log
- notepad qpid.log
复制代码 在记事本里可看到一或几行 *QQ.exe 的进程信息, 再运行下面的- for /f "tokens=2 delims= " %a in (QPID.log) do (echo %a>QPID.log&set /p qpid=<qpid.log)
- write qpid.log
- echo qpid=%qpid%
复制代码 你可以看到记事本打开的文件中 第一行(可能只有一行) 就是 *qq.exe 后面有它的 PID
*qq.exe 和它后面的 PID 之间有若干空格(delims= " 指定令牌分隔符为空格), 这就让 *QQ.exe 成为第一个令牌, 而 PID 值成为第二个令牌,
(tokens=2 指定只取第 2 个令牌)- for /f "tokens=2 delims= " %a in (QPID.log) do (echo %a>QPID.log)
复制代码
这一句让 QPID.LOG 在 %a 取得第二个令牌的值即 *QQ.exe 的 PID 时, 把这个值输出到 QPID.LOG 文件中, 得以更新,当然这一句复制代码 是在文件更新后同步立即执行的. 你可以看到, 在(命令行直接粘贴)运行上面的几段代码后, 记事本打开的文件中有一或几行信息, 而写字板打开的文件中 只会有一个数字,
这个数字就是 *QQ.exe 的 PID (进程ID)
接下来, 这一句复制代码 将更新后的 QPID.LOG 文件中的数据即唯一的一个 PID 的值 赋给了 变量 QPID,
在命令行里, 你可以看到 qpid=nnn (nnn 代指一个不确定的数字)
接下来就是 netstat 的任务了, 代码中用了下面 3 个参数, 你也可以 netstat /? 自己看说明
-a 显示所有连接和监听端口。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
到这里, 我想你该明白了.
[ 本帖最后由 neorobin 于 2009-12-12 00:48 编辑 ] |