Cuando ejecuto un programa en PowerShell, abre una nueva ventana y antes de que pueda ver el resultado, la ventana se cierra. ¿Cómo lo hago para que PowerShell mantenga esta ventana abierta?¿Cómo obtener PowerShell para mantener abierta una ventana de comando?
Respuesta
Si el programa es un archivo por lotes (extensión .cmd o .bat) que se inicia con el comando cmd /c foo.cmd
, simplemente cámbielo a cmd /k foo.cmd
y el programa se ejecuta, pero el mensaje permanece abierto.
Si el programa no es un archivo por lotes, envuélvalo en un archivo por lotes y agregue el comando pause
al final de este. Para envolver el programa en un archivo por lotes, simplemente coloque el comando en un archivo de texto y asígnele la extensión .cmd. Luego ejecuta eso en lugar del exe.
trate de hacer:
start-process your.exe -NoNewWindow
Añadir un -Wait
también si es necesario.
Cuando hago esto, me dice "Start-Process: This el comando no se puede ejecutar debido al error: el sistema no puede encontrar el archivo especificado. " Lo que es extraño porque agregué la ubicación del exe a mi ruta. – Erman
@Erman - Asegúrate de que realmente lo sea. Reinicie Powershell si es necesario. O usa la ruta completa para ver qué está pasando. – manojlds
@Erman Creo que quiere poner powershell.exe my.bat -NoNewWindow –
Estaba resolviendo un problema similar hace unas semanas. Si no desea utilizar & (& '.\program.exe'
), puede utilizar el proceso de inicio y leer la salida por el proceso de inicio (donde lee la salida de forma explícita).
sólo hay que poner este archivo PS1 como separado - por ejemplo (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()
Y luego llamar así:
.\startprocess.ps1 "c:\program.exe" "params"
También puede redirigir fácilmente de salida o aplicar algún tipo de tiempo de espera en caso de que su aplicación se congele ...
Perfecto. Exactamente lo que estaba buscando. Gracias una tonelada. – Saulius
OP parecía satisfecha con la respuesta, pero no mantiene abierta la nueva ventana después de ejecutar el programa, que es lo que parecía ser preguntando (y la respuesta que estaba buscando). Entonces, después de algunas investigaciones más, se me ocurrió:
Start-Process cmd "/c `"your.exe & pause `""
- 1. Cómo mantener una ventana de salida de comando en vim
- 2. Cómo cerrar una ventana abierta de eclipse
- 3. Cómo obtener hWnd de la ventana abierta por ShellExecuteEx .. hProcess?
- 4. ¿Necesito latir para mantener abierta una conexión TCP?
- 5. ¿Cómo puedo mantener abierta una conexión Sql siempre
- 6. ¿Cómo puedo mantener abierta una conexión cuando realizo varias consultas?
- 7. ¿Cómo escribir una función de PowerShell para obtener directorios?
- 8. última ventana abierta por window.open
- 9. Agregar contenido a una nueva ventana abierta
- 10. ¿Cómo cierro una ventana abierta automáticamente en Emacs?
- 11. X/Gnome: cómo medir la geometría de una ventana abierta
- 12. libcurl - Mantener la conexión "abierta" para Cargar varios archivos (FTP)
- 13. mantener autocompletar ui abierta en todo momento
- 14. ¿Debo mantener abierta la conexión Sqlite?
- 15. PHP Powershell comando
- 16. ¿Cómo usar una variable de PowerShell como parámetro de comando?
- 17. OleDbConnection() abre un archivo de Excel en cualquier ventana abierta de Excel. Pero no, si no hay una ventana abierta
- 18. ¿Cómo ejecutar un script de PowerShell sin mostrar una ventana?
- 19. Ejecutando un comando almacenado en una variable de Powershell
- 20. Comando Powershell en C#
- 21. cambiar la URL de una ventana emergente ya abierta
- 22. PowerShell: cómo grep salida de comando?
- 23. solo una ventana de marco abatible abierta en el tiempo
- 24. Powershell Comando: rm -rf
- 25. ventana abierta y onclick tamaño específico
- 26. ventana del navegador abierta del programa Java
- 27. ¿Cómo mantener abierta la ventana emergente cuando la orientación cambia en el tiempo de ejecución en Android?
- 28. ExtJS ventana abierta con altura máxima
- 29. Cargando una imagen de una secuencia sin mantener la secuencia abierta
- 30. ¿Cómo mantener una sesión abierta después de que el navegador se cerró en PHP?
¿este programa es un archivo ejecutable o un archivo por lotes? ¿Puedes dar el comando exacto que estás ejecutando, quizás cambiando el nombre del ejecutable? –
Es un exe. Agregué la carpeta en la que se encuentra el programa y cuando escribo el nombre del programa se ejecuta, excepto que la ventana que abre se cierra demasiado rápido para que yo pueda leer lo que dice. El programa es un programa para probar programas de Python. En cuanto a su comentario a continuación, no sé cómo ajustar un programa en un archivo por lotes:/ – Erman
Actualicé mi respuesta para aclarar cómo hacerlo. También podría tener sentido redirigir la salida de tus programas a un archivo de texto. –