如何透過批次腳本啟動進程並在任務管理器中為其指定不同的名稱?

如何透過批次腳本啟動進程並在任務管理器中為其指定不同的名稱?

我有一個如下所示的批次文件:

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 根本不建立窗口,ot /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

這樣,如果您運行它,則會在運行具有相同名稱的腳本myBatch.bat SomePerlScript之前重命名 wperl.exe 以匹配作為參數提供的名稱。.pl

相關內容