sov44, вот реализация на bat, столбцы ровные, с нумерацией, добавлен ведущий ноль, дубли процессов убраны. Слишком длинные имена обрезаются с добавлением троеточия, но когда скрипт запрашивает подтверждение на убийство процесса, его имя выводится полностью.
Сортировка выполнена через жопу, так пришлось сделать потому, что не хотелось отлавливать system и system idle из прошедшего вначале через sort списка.
Код:

@Echo Off
SetLocal EnableDelayedExpansion
:Main
Set ProcessList=
rem Получаем список процессов без хлама, типа System и System Idle
For /F "skip=3 tokens=1 delims=," %%P In ('tasklist /FO CSV /NH') Do (
rem Убираем повторы, составляем список
Echo !ProcessList!|Find ":%%~P:">nul||(
Set ProcessList=!ProcessList!:%%~P:
Set %%~P=MarkForSorting
)
)
Set ProcessNum=0&Set Row=0&Set RowData=&Set DisplayNum=0
rem Жуткий костыль с сортировкой, но по другому не вышло бы из-за skip в
rem первом цикле
For /F "tokens=1 delims==" %%P In ('Set^|Sort^|Find "MarkForSorting"') Do (
rem Назначаем номер процессу
Set /A ProcessNum+=1&Set ProcessNum!ProcessNum!=%%P
Set Process=%%P
rem Добавление ведущего нуля
If !ProcessNum! LSS 10 (Set DisplayNum=0!ProcessNum!) Else (Set DisplayNum=!ProcessNum!)
rem Максимальная ширина столбца-1
If !Row! GTR 2 (
Echo !RowData!
Set Row=1
Call :Autowidth " !DisplayNum! !Process!"
Set RowData=!String!
) Else (
Set /A Row+=1
Call :Autowidth " !DisplayNum! !Process!"
Set RowData=!RowData!!String!
)
)
rem Вывод остатка строки
Echo %RowData%
rem Удаление ненужных переменных
For /F "tokens=1 delims==" %%P In ('Set^|Find "MarkForSorting"') Do (Set %%P=)
Echo.
Set /P KillNum=Выберите номер процесса для завершения^>
Echo.
Echo Вы точно хотите убить процесс #%KillNum% !ProcessNum%KillNum%! ?
Set /P Confirm=[Y\N]^>
If /I %Confirm%==y (
TaskKill /F /IM "!ProcessNum%KillNum%!"
rem Без этой задержки в списке иногда появлялись только что убитые процессы
Ping -n 2 127.0.0.1>nul
Echo.&Echo.
GoTo Main
) Else (
Echo.&Echo.
GoTo Main
)
rem Автовыравнивание, обрезка длинного имени и добавление '...', если
rem имя процесса не влазит в ширину столбца
:Autowidth
Set String=%~1
If Not "%String:~25%"=="" Set String=%String:~,22%...
:Loop
If "%String:~25%"=="" Set String=%String% &GoTo Loop
Exit /B
UPD: Сделал автовыравнивание не на табах, как у меня было, а воспользовался советом Iska и дополнил пробелами.