[英]How to run python code from powershell with no command prompt showing?
我希望能夠從 .ps1 文件運行 python 腳本,而無需顯示終端 window 來運行腳本。 我認為我可以在最后添加一些額外的命令以使其無窗口運行,但我不確定它是什么。
我在 ps1 文件中的唯一代碼是通過鏈接路徑執行 python 腳本。
我不想以其他方式運行代碼,它必須來自 ps1 腳本,因為我最終會添加到它以獲得更多功能。 如果可能的話,我也寧願不必將文件更改為 a.pyw。
E:/script.py
*注意 - 這次我從不同的驅動器運行文件,但我希望它來自 E:/,就像我在代碼中一樣。
我不想顯示的內容:
在評論中你 state:
我正在使用運行 (WIN + R) 和此命令:
powershell -wh iex (E:\a.ps1)
-wh
是-WindowStyle Hidden
的縮寫
iex
是Invoke-Expression
的縮寫,此處不需要- 通常應避免使用:請參閱此答案。
注意:雖然這確實使控制台 window PowerShell session本身以不可見的方式運行,但 window 只有在短暫顯示 first 后才會變得不可見。
為避免控制台 window 的這種短暫閃爍,必須間接啟動powershell.exe
,即通過一個 GUI 子系統應用程序,該應用程序使用隱藏的 window 啟動它; 該答案的底部討論了選項。
另請注意,計划在未來直接支持此功能,但可能只會針對PowerShell (Core) 7+的 CLI、 pwsh.exe
- 請參閱GitHub 問題 #3028 。
有了這個:
直接從隱藏的 PowerShell session 調用的控制台應用程序(包括.ps1
腳本)也隱藏運行,因為它們直接在隱藏的控制台 window 中運行。
相比之下,任何GUI應用程序或通過Start-Process
調用的任一類型的應用程序都以可見方式運行。
Start-Process -WindowStyle Hidden
來不可見地運行 GUI 應用程序,但不幸的是,這似乎不適用於.pyw
文件,即pythonw.exe
-launched 腳本,它們仍然以可見方式運行。 [1] 默認情況下,直接調用的.py
文件通過py.exe
執行,這是一個控制台應用程序。
奇怪的是,您的屏幕截圖表明它不是您的情況。
py.exe
通常只是真正控制台 Python 可執行文件的啟動器(允許您使用py -2...
和py -3...
在 Python 的 v2 和 v3 版本之間切換), python.exe
,作為解決方法您可以嘗試以下操作(如果需要,請使用python.exe
的完整路徑):
E:\a.ps1
腳本以使用python.exe
顯式調用您的.py
腳本:python.exe E:\script.py
# Short for:
# powershell.exe -WindowStyle Hidden -File E:\a.ps1
powershell -w h -f E:\a.ps1
如果這沒有幫助,請考慮重新安裝 Python。
[1] 我猜這是因為.pyw
腳本本身可能創建的 windows 與pythonw.exe
GUI 子系統可執行文件的(不可見的)主要 window 無關。
Start-Process python -ArgumentList "python-script-file-path" -NoNewWindow
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.