我有一个如下所示的批处理文件:
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