#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» работает. Усечение не происходит.