Quando eseguo un programma su PowerShell apre una nuova finestra e prima che possa vedere l'output, la finestra si chiude. Come posso fare in modo che PowerShell mantenga questa finestra aperta?Come ottenere PowerShell per mantenere aperta una finestra di comando?
risposta
Se il programma è un file batch (estensione .cmd o .bat) avviato con il comando cmd /c foo.cmd
, è sufficiente modificarlo in cmd /k foo.cmd
e il programma viene eseguito, ma il prompt rimane aperto.
Se il programma non è un file batch, inserirlo in un file batch e aggiungere il comando pause
al termine. Per avvolgere il programma in un file batch, è sufficiente posizionare il comando in un file di testo e assegnargli l'estensione .cmd. Quindi esegui quello invece dell'exe.
provare a fare:
start-process your.exe -NoNewWindow
Aggiungi un -Wait
troppo, se necessario.
Quando faccio questo mi dice "Start-Process: This il comando non può essere eseguito a causa dell'errore: il sistema non riesce a trovare il file specificato. " Che strano perché ho aggiunto la posizione dell'exe al mio percorso. – Erman
@Erman: assicurati che lo sia davvero. Riavvia PowerShell se necessario. Oppure usa il percorso completo per vedere cosa sta succedendo. – manojlds
@Erman Penso che vuoi mettere powershell.exe my.bat -NoNewWindow –
Stavo risolvendo un problema simile qualche settimana fa. Se non si desidera utilizzare & (& '.\program.exe'
), è possibile utilizzare il processo di avvio e leggere l'output dal processo di avvio (in cui si legge l'output in modo esplicito).
Basta mettere questo file PS1 come separati - per esempio (o 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()
E poi lo chiamano piace:
.\startprocess.ps1 "c:\program.exe" "params"
Si può anche facilmente reindirizzare uscita o implementare qualche tipo di timeout nel caso in cui l'applicazione possa congelare ...
Perfetto. Esattamente quello che stavo cercando. Grazie mille. – Saulius
L'OP sembrava soddisfatto della risposta, ma non mantiene aperta la nuova finestra dopo l'esecuzione del programma, che è ciò che sembrava essere chiedendo (e la risposta che stavo cercando). Quindi, dopo un po 'di ricerche, ho trovato:
Start-Process cmd "/c `"your.exe & pause `""
- 1. Come mantenere aperta la finestra della console
- 2. Come mantenere la finestra della shell aperta dopo aver eseguito uno script PowerShell?
- 3. PowerWare Powershell finestra di comando della riga di comando ISO
- 4. Come mantenere aperta un'abilità di alexa?
- 5. Come scrivere una funzione di PowerShell per ottenere le directory?
- 6. Come ottenere hWnd della finestra aperta da ShellExecuteEx .. hProcess?
- 7. Passa da una finestra aperta in Pharo
- 8. Come mantenere aperta la finestra popup quando l'orientamento cambia in fase di esecuzione in Android?
- 9. Mantenere aperta la sessione del database
- 10. mantenere la finestra della riga di comando aperta quando si esegue l'operazione pianificata eseguendo il file batch
- 11. cetriolo + Capybara test per garantire una nuova finestra viene aperta
- 12. Come si chiude una finestra aperta automaticamente in Emacs?
- 13. Anteprima personalizzata per finestra di dialogo aperta utilizzando Delphi
- 14. : come lasciare la finestra aperta della console
- 15. disabilita finestra aperta in javascript
- 16. Come aprire la finestra della console PowerShell da Powershell
- 17. Rilevamento dell'evento onload di una finestra aperta con window.open
- 18. Esecuzione di un comando memorizzato in una variabile da PowerShell
- 19. OleDbConnection() apre un file Excel in qualsiasi finestra di Excel aperta. Ma non se non c'è una finestra aperta
- 20. evento Trigger su finestra di dialogo aperta
- 21. Come ottenere informazioni di comando di linea per un processo in PowerShell o C#
- 22. Come ottenere una stringa invece di una matrice in PowerShell?
- 23. onclick finestra aperta e la dimensione specifica
- 24. PHP PowerShell comando
- 25. Finestra aperta in JavaScript con HTML inserito
- 26. Google Map v3 - Centrare una finestra quando aperta
- 27. Come eseguire uno script PowerShell senza visualizzare una finestra?
- 28. Comando PowerShell in C#
- 29. Apre automaticamente gli strumenti di sviluppo di Chrome quando viene aperta una nuova scheda/nuova finestra
- 30. Come ottenere l'attuale fase aperta in JavaFX?
questo programma è un file exe o batch? Puoi dare il comando esatto che stai eseguendo, magari cambiando il nome dell'eseguibile? –
È un exe. Ho aggiunto la cartella che il programma è nel mio percorso e quando digito il nome del programma che esegue, ad eccezione della finestra in cui si apre si chiude troppo velocemente per me per leggere ciò che dice. Il programma è un programma per testare i programmi python. Per quanto riguarda il tuo commento qui sotto, non so come avvolgere un programma in un file batch:/ – Erman
Ho aggiornato la mia risposta per chiarire come farlo. Potrebbe anche avere senso reindirizzare l'output dei programmi su un file di testo. –