如何通过批处理脚本在任务管理器中启动一个进程并赋予它不同的名称?

如何通过批处理脚本在任务管理器中启动一个进程并赋予它不同的名称?

我有一个如下所示的批处理文件:

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 /?更多信息。


正如 OP 在评论中指出的那样,这不会影响任务管理器中的名称。

正如 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

这样,如果您运行它,它将重命名 wperl.exe 以匹配在运行具有相同名称的脚本myBatch.bat SomePerlScript之前作为参数提供的名称。.pl

相关内容