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

2

Eu tenho um arquivo em lote que se parece com isso:

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

Ele é basicamente projetado para contornar o fato de que perl.exe deixa uma janela de prompt de comando irritante flutuando na minha área de trabalho; Eu quero que este 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 ao processo um nome personalizado, para que eu possa lembrar o que é e evitar que ele fique confuso com outros processos do wperl.exe que eu possa iniciar?

    
por ekolis 28.11.2013 / 20:01

3 respostas

1

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

Você está melhor com o Perl2Exe

Escreva seu roteiro. convertê-lo com perl2exe:

perl2exe script.pl

Você receberá 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 usar Quiet (observe que a versão pro do perl2exe vai fazer isso, mas por que pagar o custo extra quando o silêncio é gratuito?)

Seu arquivo de 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 pelo nome.

    
por 30.11.2013 / 06:08
2

Fazemos isso um pouco sujo ... na verdade, fazemos uma cópia do wperl.exe para algo mais óbvio - ou seja, o 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ê obtém a essência.

    
por 28.11.2013 / 20:15
2

Você pode usar Start.exe para 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 ser iniciado com o 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. Algo como:

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

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

Start.exe tem algumas outras opções úteis que você pode gostar (/ B para não criar uma janela, ot / D para especificar o caminho, e tc.). Confira Start /? para mais informações.

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

Como FreudianSlip aponta em sua resposta, renomear o 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ê executar myBatch.bat SomePerlScript , ele renomeará o wperl.exe para corresponder ao nome fornecido como o argumento antes de executar o script .pl com o mesmo nome.

    
por 28.11.2013 / 20:22