MTP

MTP 25.01.02.rev.1

Нет прав для скачивания
  • Автор темы Автор темы Shegorat
  • Дата начала Дата начала

Shegorat

Lord of Madness
Администратор
Пользователь Shegorat разместил новый ресурс:

MTP - Утилита для параллельного запуска процессов

MTP - позволяет запускать несколько процессов параллельно, имеет возможность подстановки значений внутрь команды запуска

Использование:
mtp.exe <options>

Опции:
Command | Description
-t <n> | thread count
-alias <alias=value> | register constant alias
-l <filename> | worklist with commands (required)
-w <path> | workdir
-p <priority> | priority for executed commands: idle, below_normal,...
Узнать больше об этом ресурсе...
 
Последнее редактирование:
Shegorat обновил(а) ресурс MTP новой записью:

MTP v.0.20.07.28

Изменения:
  • Исправлена некорректная работа некоторых программ при включенных опциях -s или -ss
  • Добавлена опция -hp для показа примерного прогресса в заголовке консоли
  • Ещё какие-то мелкие изменения

Узнать больше об этом обновлении...
 
т.е. это что то типа? :)
Код:
START /MIN /HIGH run.cmd>"C:\logs\log.txt"
START /MIN /HIGH run.cmd>"C:\logs\log.txt"
START /MIN /HIGH run.cmd>"C:\logs\log.txt"
START /MIN /HIGH run.cmd>"C:\logs\log.txt"
 
Да, что-то типа того, но только на стероидах.
Есть возможность прописывать алиасы для констант, которые будут подставлены в файл команд, приоритет потоков, ограничение по количеству потоков, подсчет времени выполнения каждой команды и общего времени и ещё мелкие плюшки.
 
Shegorat обновил(а) ресурс MTP новой записью:

mtp v.23.08.29.rev.1

Список изменений:
  • Добавлены встроенные alias - {index}, {time}, {date}, {datetime}
  • Добавлена статистика по потокам (опция --stats)
  • Изменен парсер аргументов
  • Обновлены модули
  • Исправлены утечки дескрипторов
  • Небольшие фиксы

Узнать больше об этом обновлении...
 
Shegorat обновил(а) ресурс MTP новой записью:

MTP v.23.09.26.rev.1

Небольшое обновление но с полезным функционалом.

Изменения:
  • Исправлена ошибка работы опции -ss, thnx Edison007
  • Добавлен обработчик статус-кода работы бинарника, а также статистика по успешным/неуспешным запущенным командам

Итак, как работает обработчик кодов ошибок:
Я добавил новую опцию --expected-code <result_code>. Она устанавливает ожидаемый успешный статус-код ( по умолчанию 0). Если результат запуска команды отличается от него, тогда команда...

Узнать больше об этом обновлении...
 
Я уже не помню, честно говоря, кто придумал MTP - то ли я, то ли Edison, но те силы и тесты, что я вложил в эту утилиту, вполне позволяют мне считать себя ее крестным отцом )
Поэтому я рад, что автор продолжает ее развитие.
Выход версии 25.01.02 не сопровождался официальным списком изменений, так что напишу я:

- Уменьшен размер исполняемых файлов (суммарно на 265 КБ)
- Обновлен компилятор (возможно из-за него изменения в размере)
- Сломан функционал одной опции


В связи с этим хочу кое что зарепортить и предложить.

1. В версии 25.01.02 сломан функционал опции -log

При попытке запустить команду:
mtp.exe -l _run.txt -t 1 -log _log.txt

В консоли выдается:
Duplicate parameter '-l', with value 'og'
Соответственно _log.txt не создается.
В версии 24.02.09.1 работает.
Можно потестить таким батником
echo off
del /f /q _run.txt 2>nul
echo calc.exe>_run.txt
mtp.exe -l _run.txt -t 1 -log _log.txt
del /f /q _run.txt 2>nul
pause
exit

Добавлен issue на Gitlab

2. Косметика
Мне прям вот совсем не нравится, как выглядит сейчас консоль в MTP.
Начнем прям с первой строки...
Было бы хорошо сделать ее информативнее, как в 7z например. То есть вот так:

MTP 25.01.02 (x64) - multi-thread processor (c) 2017-2025 Shegorat

Далее, зачем там эти некрасивые, невыровненные строки с перечислением ссылок.
Убираем протоколы из ссылок (браузер сам поймет как ломиться) и делаем аккуратнее.

Код:
   Home: krinkels.org
Support: patreon.com/Shegorat
   Bugs: gitlab.com/Shegorat/mtp

Далее. Мне не совсем нравится, что часть опций указывается то с одним дефисом, то с двумя.
Как такового канона нет и кто как хочет, так и строчит, но в целом обычно двумя дефисами обозначают long options, то есть длинные аналоги коротких опций.
То есть -h и --help еще как-то объяснимо, а вот совершенно непонятно, почему -alias с одним дефисом, а такая же пятибуквенная опция --stats с двумя.
Предлагаю избавиться от двух дефисов вообще. Исключение: --help
Параллельно предлагаю сократить --expected-code <result_code>
Таким образом:
--stats становится -stats
--expected-code <result_code> становится -code <N> или даже -c <N>

Теперь про ширину....
Классически, консольная программа должна иметь 80 символов в ширину.
Не надо мне сейчас говорить про то, что консоль легко расширяется, что при некоторых опциях сама переносит длинные строки...
80 (и даже лучше 79) символов вывода базовой справки - это красиво и педантично.
Поэтому предлагаю переформатировать вывод с учетом длинны строк. Собственно, в самом конце, я представлю вариант.

Про опечатки...
В описании опции stats написано: Print statistics for each threads
Не хватает буквы r в for, и все таки правильнее (вроде) писать for each thread, то есть в единственном числе, но threads если for each of threads

Финальный предполагаемый вариант вывода консоли ниже.
Прошу заметить, что отступ в списке опций уменьшен до 1 пробела вместо двух.

Код:
MTP 25.01.02 (x64) - multi-thread processor (c) 2017-2025 Shegorat
   Home: krinkels.org
Support: patreon.com/Shegorat
   Bugs: gitlab.com/Shegorat/mtp

Usage:
 mtp.exe <options>

Options:
 -alias <name=value>   Add constant aliases to replace in command string
 -h, --help            Print this message
 -hp                   Display percents in title
 -l <filename>         Work list with commands (required)
 -log <logfile>        Log execution time of every command to given file
 -p <priority>         Priority for executed commands (default: normal):
                       idle, below_normal, normal, above_normal, high, realtime
 -s                    Silent mode (print only executed commands,
                       doesn't affect logfile)
 -ss                   Super silent mode (no output, doesn't affect logfile)
 -t <N>                Thread count
 -w <working_dir>      Override working directory
 -code <N>             Process expected result code (default 0)
 -stats                Print statistics for each thread

Example:
 mtp.exe -t 4 -l run.cmd -p high -log log.txt

Aliases:
  {index}   : Current command index
  {time}    : Current time in format HH:mm:ss
  {date}    : Current date in format yyyy-MM-dd
  {datetime}: Current datetime in format yyyy-MM-dd HH:mm:ss
  {appdata} : User AppData directory
  {temp}    : System temp directory
  {userdocs}: User documents directory
  {work_dir}: Current working directory
 
Последнее редактирование:
Как такового канона нет и кто как хочет, так и строчит, но в целом обычно двумя дефисами обозначают long options, то есть длинные аналоги коротких опций.
То есть -h и --help еще как-то объяснимо, а вот совершенно непонятно, почему -alias с одним дефисом, а такая же пятибуквенная опция --stats с двумя.
Так в том то и дело, что это именно long options, я не придумал для них коротких мнемоник, чтобы они были сразу понятны, как устоявшиеся -log и -h. Также с двуя дефисами указывают опции, которые вторичны, и используются редко. Пример вывод gcc --help
Код:
  -no-canonical-prefixes   Do not canonicalize paths when building relative
                           prefixes to other gcc components.
  -pipe                    Use pipes rather than intermediate files.
  -time                    Time the execution of each subprocess.
  -specs=<file>            Override built-in specs with the contents of <file>.
  -std=<standard>          Assume that the input sources are for <standard>.
  --sysroot=<directory>    Use <directory> as the root directory for headers

--expected-code <result_code> становится -code <N> или даже -c <N>
Тут спорно, '-c <N>' можно не сразу запомнить, как вариант могу предложить '-ec <N>' как сокращение от expected_code

По остальному посмотрю, спасибо за багрепорт
 
Назад
Сверху