tasklist -v输出截断

问题描述

很明显,Windows dos cmd“ tasklist -v”在许多字符之后被截断。 我的perl程序正在读取特殊的命令进程,以与数据库中存储的进程进行比较。我正在尝试确保预期的进程正在运行。

不幸的是,该脚本失败了,因为我的50个左右的进程之一被“ tasklist -v”截断了。

还有替代命令吗?

谢谢, 萨米

解决方法

以下代码演示了tasklist /fo table命令作为管道输入进行进一步处理的用法

提示:help tasklist

use strict;
use warnings;

my $regex = qr/^(?<name>.*?)\s+(?<pid>\d+)\s+(?<session_name>\S+)\s+(?<session>\d+)\s+(?<mem>.*)/;

$^ = 'STDOUT_TOP';

open my $pipe,'tasklist /fo table|';
    
/$regex/ && write for <$pipe>;

close $pipe;

$~ = 'STDOUT_BOTTOM';
write;

exit 0;

format STDOUT_TOP =
+----------------------------------+------------+----------+---------+-----------+
| Name                             | PID        | SessName | Session | Memory    |
+----------------------------------+------------+----------+---------+-----------+
.

format STDOUT = 
| @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | @>>>>>>>>> | @<<<<<<< | @>>>>>> | @>>>>>>>> |
$+{name},$+{pid},$+{session_name},$+{session},$+{mem}
.

format STDOUT_BOTTOM =
+----------------------------------+------------+----------+---------+-----------+
.

输出

+----------------------------------+------------+----------+---------+-----------+
| Name                             | PID        | SessName | Session | Memory    |
+----------------------------------+------------+----------+---------+-----------+
| System Idle Process              |          0 | Services |       0 |       8 K |
| System                           |          4 | Services |       0 |   7,452 K |
| Registry                         |        100 | Services |       0 |  28,664 K |
| smss.exe                         |        412 | Services |       0 |     368 K |
| csrss.exe                        |        552 | Services |       0 |   2,256 K |
| csrss.exe                        |        776 | Console  |       1 |   2,496 K |
| wininit.exe                      |        796 | Services |       0 |   1,420 K |
| winlogon.exe                     |        860 | Console  |       1 |   5,084 K |
| services.exe                     |        940 | Services |       0 |   5,964 K |
..............
| RuntimeBroker.exe                |       7392 | Console  |       1 |   8,604 K |
| dwm.exe                          |       1224 | Console  |       1 |  70,144 K |
| chrome.exe                       |      10580 | Console  |       1 | 103,584 K |
| svchost.exe                      |      12152 | Services |       0 |   7,496 K |
| LockApp.exe                      |       2620 | Console  |       1 |  39,392 K |
| RuntimeBroker.exe                |       3104 | Console  |       1 |  30,508 K |
| chrome.exe                       |        452 | Console  |       1 |  54,088 K |
| svchost.exe                      |       7460 | Services |       0 |   7,408 K |
| svchost.exe                      |       5744 | Services |       0 |  11,540 K |
♀+----------------------------------+------------+----------+---------+-----------+
| Name                             | PID        | SessName | Session | Memory    |
+----------------------------------+------------+----------+---------+-----------+
| WmiPrvSE.exe                     |       6200 | Services |       0 |  10,612 K |
| perl.exe                         |       2520 | Console  |       1 |   8,948 K |
| tasklist.exe                     |       4808 | Console  |       1 |   8,940 K |
+----------------------------------+------------+----------+---------+-----------+