список задач -v усечение выходных данных

#perl #tasklist

#perl #список задач

Вопрос:

Очевидно, что Windows dos cmd «tasklist -v» усекает строки после такого количества символов. Моя программа perl считывает специальные командные процессы для сравнения с процессами, хранящимися в моей базе данных. Я пытаюсь убедиться, что ожидаемые процессы запущены.

К сожалению, сценарий завершается с ошибкой, поскольку один из моих примерно 50 процессов усекается «tasklist -v».

Есть ли альтернативная команда?

Спасибо, Сэмми

Комментарии:

1. TASKLIST /FO LIST ? ... /FO CSV ?

Ответ №1:

Следующий код демонстрирует использование 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/ amp;amp; 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 |
 ---------------------------------- ------------ ---------- --------- ----------- 
  

Комментарии:

1. «СПИСОК ЗАДАЧ -V / FO CSV» работает. Усечение не происходит.