Khi tôi chạy một chương trình trên PowerShell, nó sẽ mở ra một cửa sổ mới và trước khi tôi có thể thấy đầu ra, cửa sổ đóng lại. Làm thế nào để tôi làm cho nó như vậy PowerShell giữ cửa sổ này mở?Làm cách nào để PowerShell giữ cửa sổ lệnh mở?
Trả lời
Nếu chương trình là một tệp lô (.cmd hoặc .bat extension) được khởi chạy với lệnh cmd /c foo.cmd
, chỉ cần thay đổi thành cmd /k foo.cmd
và chương trình thực thi, nhưng lời nhắc vẫn mở.
Nếu chương trình không phải là tập tin thực thi, hãy quấn nó vào tập tin thực thi và thêm lệnh pause
vào cuối. Để bọc chương trình trong một tập tin batch, chỉ cần đặt lệnh trong một tệp văn bản và cung cấp cho nó phần mở rộng .cmd. Sau đó, thực hiện thay vì exe.
Hãy thử thực hiện:
start-process your.exe -NoNewWindow
Thêm một -Wait
quá nếu cần thiết.
Khi tôi làm điều này nó cho tôi biết "Bắt đầu quá trình: Điều này không thể thực hiện lệnh do lỗi: Hệ thống không thể tìm thấy tệp được chỉ định. " Điều lạ lùng vì tôi đã thêm vị trí của exe vào đường dẫn của tôi. – Erman
@Erman - Hãy chắc chắn rằng nó thực sự là. Khởi động lại Powershell nếu cần. Hoặc sử dụng đường dẫn đầy đủ để xem điều gì đang diễn ra. – manojlds
@Erman Tôi nghĩ bạn muốn đặt powershell.exe my.bat -NoNewWindow –
Tôi đã giải quyết một vấn đề tương tự vài tuần trước. Nếu bạn không muốn sử dụng & (& '.\program.exe'
) thì bạn có thể sử dụng quy trình bắt đầu và đọc đầu ra theo quy trình bắt đầu (nơi bạn đọc đầu ra một cách rõ ràng).
Chỉ cần đặt này PS1 tập tin riêng biệt - ví dụ (hoặc macro):
param (
$name,
$params
)
$process = New-Object System.Diagnostics.Process
$proInfo = New-Object System.Diagnostics.ProcessStartInfo
$proInfo.CreateNoWindow = $true
$proInfo.RedirectStandardOutput = $true
$proInfo.RedirectStandardError = $true
$proInfo.UseShellExecute = $false
$proInfo.FileName = $name
$proInfo.Arguments = $params
$process.StartInfo = $proInfo
#Register an Action for Error Output Data Received Event
Register-ObjectEvent -InputObject $process -EventName ErrorDataReceived -action {
foreach ($s in $EventArgs.data) { Write-Host $s -ForegroundColor Red }
} | Out-Null
#Register an Action for Standard Output Data Received Event
Register-ObjectEvent -InputObject $process -EventName OutputDataReceived -action {
foreach ($s in $EventArgs.data) { Write-Host $s -ForegroundColor Blue }
} | Out-Null
$process.Start() | Out-Null
$process.BeginOutputReadLine()
$process.BeginErrorReadLine()
$process.WaitForExit()
Và sau đó gọi nó thích:
.\startprocess.ps1 "c:\program.exe" "params"
Bạn cũng có thể dễ dàng chuyển hướng đầu ra hoặc thực hiện một số loại của thời gian chờ trong trường hợp ứng dụng của bạn có thể đóng băng ...
Hoàn hảo. Chính xác những gì tôi đang tìm kiếm. Cảm ơn một tấn. – Saulius
OP có vẻ hài lòng với câu trả lời, nhưng nó không giữ cửa sổ mới mở sau khi thực hiện chương trình, đó là những gì anh ta có vẻ hỏi (và câu trả lời tôi đang tìm kiếm). Vì vậy, sau một số nghiên cứu khác, tôi đã đưa ra:
Start-Process cmd "/c `"your.exe & pause `""
- 1. Làm cách nào để giữ cửa sổ trình bao mở sau khi chạy tập lệnh PowerShell?
- 2. Cách giữ cửa sổ đầu ra lệnh trong vim
- 3. Làm cách nào để chạy .exe nhưng vẫn ở trong cùng cửa sổ lệnh (không mở cửa sổ mới)?
- 4. Làm cách nào để mở cửa sổ thứ hai từ cửa sổ đầu tiên trong wpf?
- 5. Làm cách nào để mở GUI Git từ cửa sổ lệnh?
- 6. Làm cách nào để mở cửa sổ Explorer trong thư mục đã cho từ cmd.exe?
- 7. Làm thế nào để mở cửa sổ Console trong Eclipse?
- 8. Làm cách nào để chạy tập lệnh PowerShell dưới dạng tác vụ nền mà không hiển thị cửa sổ?
- 9. Làm cách nào để tạo các lệnh di chuyển cửa sổ bỏ qua một cửa sổ nhất định?
- 10. trong Qt, Làm cách nào để đặt cửa sổ là cửa sổ hiện tại?
- 11. Làm thế nào để chạy lệnh 'sudo' trong cửa sổ
- 12. cửa sổ dòng lệnh nhiều lệnh
- 13. Làm cách nào để mở cửa sổ. Mở bằng thanh công cụ trong Google Chrome?
- 14. Làm cách nào để mở một cửa sổ dọc khác (: vsp) ở bên trái trong vim?
- 15. Làm cách nào để giữ cửa sổ trên cùng của tôi ở trên cùng?
- 16. Làm cách nào để đóng cửa sổ tự động mở trong Emacs?
- 17. Làm cách nào để mở một cửa sổ mới và nhiều url trong Safari bằng tập lệnh táo?
- 18. Làm cách nào để "Mở trong Cửa sổ mới" bằng cách sử dụng điều khiển WebBrowser?
- 19. Làm thế nào để giữ cửa sổ con ở trên đầu?
- 20. FFT - Khi nào cần mở cửa sổ?
- 21. Cách thêm Cửa sổ giữ chỗ trong Xcode
- 22. Mở cửa sổ Popal Modal
- 23. Làm cách nào để truy cập đối tượng cửa sổ của tab mới được mở? [trong phần mở rộng firefox]
- 24. Làm thế nào để gỡ lỗi cửa sổ mở rộng Safari mở rộng?
- 25. JavaFX mở cửa sổ mới
- 26. cửa sổ dòng lệnh javascript
- 27. Làm cách nào để có nhiều cửa sổ trong R
- 28. Mở Cửa sổ trình duyệt IE
- 29. Có thể mở một cửa sổ Windows Explorer từ PowerShell không?
- 30. Có cách nào để tích hợp git vào cửa sổ cmd hoặc powershell không?
là chương trình này là tệp exe hoặc tệp hàng loạt? Bạn có thể đưa ra lệnh chính xác mà bạn đang chạy, có lẽ thay đổi tên của tệp thực thi? –
Đó là một exe. Tôi đã thêm thư mục mà chương trình vào đường dẫn của tôi và khi tôi nhập tên chương trình nó chạy, ngoại trừ cửa sổ nó mở ra quá nhanh để tôi đọc nó nói gì. Chương trình là một chương trình để kiểm tra các chương trình python. Đối với bình luận của bạn dưới đây, tôi không biết làm thế nào để bọc một chương trình trong một tập tin thực thi:/ – Erman
Tôi cập nhật câu trả lời của tôi để làm rõ làm thế nào để làm điều đó. Nó cũng có thể có ý nghĩa để chuyển hướng đầu ra chương trình của bạn vào một tập tin văn bản. –