Как запустить процесс и дать ему другое имя в диспетчере задач с помощью пакетного скрипта?

Как запустить процесс и дать ему другое имя в диспетчере задач с помощью пакетного скрипта?

У меня есть пакетный файл, который выглядит так:

cd C:\Some\Folder
wperl SomePerlScript.pl %*
exit 0

По сути, он предназначен для обхода того факта, что perl.exe оставляет на рабочем столе раздражающее окно командной строки; я хочу, чтобы этот скрипт работал в фоновом режиме, не беспокоя меня.

Но когда я это делаю, в диспетчере задач я вижу "wperl.exe" вместо имени скрипта. Есть ли способ дать процессу пользовательское имя, чтобы я мог запомнить, что это такое, и не путать его с другими процессами wperl.exe, которые я могу запустить?

решение1

wperl — это процесс, выполняющий инструкции, содержащиеся в скрипте. Хотя метод FreudianSlip будет работать (только потому, что вы измените имя исполняемого файла, который выполняет инструкции), это хакерский способ справиться с этим.

Вам будет лучше сPerl2Exe

Напишите свой скрипт. Преобразуйте его с помощью perl2exe:

perl2exe script.pl

Вы получите исполняемый файл с именем script.exe.

запустите исполняемый файл, и он отобразится в диспетчере задач как script.exe.

Чтобы избежать всплывающего окна, вы можете использоватьТихий(обратите внимание, что профессиональная версия perl2exe тоже это сделает, но зачем платить дополнительную плату, если Quiet бесплатен?)

Ваш пакетный файл будет вызывать ваш исполняемый файл следующим образом:

quiet script.exe

Теперь у вас есть работающая в фоновом режиме версия вашего скрипта, которая отображается в диспетчере задач по имени.

решение2

Мы делаем это немного грязно... на самом деле мы создаем копию wperl.exe во что-то более очевидное — например, someperlscript.exe.

cd C:\Some\Folder
copy c:\perl\bin\wperl.exe c:\perl\bin\someperlscript.exe
someperlscript.exe SomePerlScript.pl %*
del c:\perl\bin\someperlscript.exe
exit 0

Нужно немного поработать над устойчивостью и т.п., но суть вы уловили.

решение3

Вы можете использовать Start.exeдля указания заголовков окон и запуска программ. Так что, возможно, попробуйте что-то вроде:

cd C:\Some\Folder
start "My Window Title" /MIN /WAIT wperl SomePerlScript.pl %*
exit 0

Это должно запустить его в свернутом виде с вашим индивидуальным заголовком.

Кроме того, если вы указываете скрипт при запуске пакета, вы можете использовать его имя в качестве заголовка, передав аргумент. Что-то вроде:

cd C:\Some\Folder
start %1 /MIN /WAIT wperl %1 %*
exit 0

Затем запустите его с помощью myBatch.bat SomePerlScript.pl. Затем он должен использовать любое имя скрипта, указанное в качестве заголовка.

Start.exeимеет некоторые другие удобные опции, которые вам могут понравиться (/B, чтобы вообще не создавать окно, или /D, чтобы указать путь и т. д.). Проверьте Start /?для получения дополнительной информации.


Как указал автор комментария, это не влияет на имя в диспетчере задач.

Как указывает FreudianSlip в своем ответе, переименование wperl.exe может быть единственным вариантом.

Развивая его идею, я бы предложил что-то вроде:

cd C:\Some\Folder
copy c:\perl\bin\wperl.exe c:\perl\bin\%1.exe
%1 %1.pl %*
del c:\perl\bin\%1.exe
exit 0

Таким образом, если вы запустите его, myBatch.bat SomePerlScriptон переименует wperl.exe в соответствии с именем, указанным в качестве аргумента, перед запуском .plскрипта с тем же именем.

Связанный контент