Como posso iniciar um processo e atribuir-lhe um nome diferente no Gerenciador de Tarefas por meio de um script em lote?

Como posso iniciar um processo e atribuir-lhe um nome diferente no Gerenciador de Tarefas por meio de um script em lote?

Eu tenho um arquivo em lote parecido com este:

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

Ele foi basicamente projetado para contornar o fato de que perl.exe deixa uma irritante janela de prompt de comando flutuando na minha área de trabalho; Quero que esse script seja executado em segundo plano sem me incomodar.

Mas quando faço isso, no Gerenciador de Tarefas, vejo “wperl.exe”, em vez do nome do script. Existe alguma maneira de dar um nome personalizado ao processo, para que eu possa lembrar o que é e evitar que ele seja confundido com qualquer outro processo wperl.exe que eu possa iniciar?

Responder1

wperl é o processo que executa as instruções contidas no script. Embora o método FreudianSlip funcione (apenas porque você altera o nome do executável que está executando as instruções), é uma maneira hackeada de lidar com isso.

Você está melhor comPerl2Exe

Escreva seu roteiro. converta-o com perl2exe:

perl2exe script.pl

Você obterá um arquivo executável chamado script.exe

execute o executável e ele aparecerá como script.exe no gerenciador de tarefas.

Para evitar a janela que aparece, você pode usarQuieto(observe que a versão pro do perl2exe fará isso, mas por que pagar o custo extra quando o Quiet é gratuito?)

Seu arquivo em lote chamaria seu executável assim:

quiet script.exe

Agora você tem uma versão silenciosa do seu script que aparece no gerenciador de tarefas por nome.

Responder2

Fazemos isso um pouco sujo...na verdade, fazemos uma cópia do wperl.exe para algo mais óbvio - ou seja, 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

Precisa de um pouco de trabalho para resiliência, etc., mas você entendeu.

Responder3

Você pode usar Start.exepara especificar títulos de janelas e iniciar programas. Então, talvez tente algo como:

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

Isso deve começar minimizado com seu título personalizado.

Além disso, se você especificar o script ao executar o lote, poderá usar seu nome como título, passando um argumento.

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

Em seguida, execute-o com myBatch.bat SomePerlScript.pl. Ele deve então usar qualquer nome de script fornecido como título.

Start.exetem algumas outras opções úteis que você pode gostar (/B para não criar nenhuma janela, ou /D para especificar o caminho, etc.). Confira Start /?para mais informações.


Conforme apontado pelo OP nos comentários, isso não afeta o nome no Gerenciador de Tarefas.

Como FreudianSlip aponta em sua resposta, renomear wperl.exe pode ser a única opção.

Expandindo sua ideia, sugiro talvez algo como:

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

Dessa forma, se você executá-lo, myBatch.bat SomePerlScriptele renomeará wperl.exe para corresponder ao nome fornecido como argumento antes de executar o .plscript com o mesmo nome.

informação relacionada