¿Cómo puedo forzar que un mensaje de error de cmd.exe no se cierre?

¿Cómo puedo forzar que un mensaje de error de cmd.exe no se cierre?

Se ejecuta un .exe que se ejecuta a través de cmd.exe y luego desaparece rápidamente antes de que pueda leer el mensaje de error. ¿Cómo puedo hacer que la ventana de cmd.exe y el mensaje de error no se cierren? ¿O hay alguna forma de registrar la información de error que acaba de aparecer? Gracias.

Respuesta1

Iniciar un programa que inicie la consola cerrará la ventana, porque CMD ya no es necesario.

Si presiona start, escribe cmdy presiona Intro, iniciará un símbolo del sistema.

Presione la letra de la unidad en la que se encuentra el programa si no está en C:, seguido de : y presione Enter.

En los ejemplos siguientes, el _ al final representa el cursor.

Ejemplo:

C:\Users\User>D:_

D:\>_

ahora, use el comando cdpara navegar al directorio del programa. Puedes presionartab para autocompletar nombres. También tabcrearía Herramientas si esa carpeta existe.

Ejemplo:

D:\>cd Tools_

D:\Tools>cd "My Program"_   <- type 'My' and press tab to Autocomplete to "My Program"

D:\Tools\My Program>_

Ahora ingrese el nombre del programa que desea ejecutar.

Ejemplo:

D:\Tools\My Program>program_
Hello, I am the error message you want to see.

D:\Tools\My Program>_

Respuesta2

Normalmente, cuando tengo que hacer esto, creo un archivo bat en la misma carpeta (por lo que el nuevo archivo de texto cambia el nombre a cualquier.bat), lo abro en la carpeta de texto y luego escribo:

ProgramName.exe
Pause

Cierra y guarda, luego ejecuta el archivo bat y debería mantenerlo abierto.

Respuesta3

Puede utilizar el archivo .bat para ejecutar ese exe.

Además, puede utilizar el siguiente comando en cmd para registrar el error/salida de ese archivo exe en un archivo de texto:

miArchivo.exe >> "C:\logFile.txt"

El símbolo doble mayor que se agrega al archivo existente " >> "; sin embargo, el símbolo único sobrescribe el archivo existente ">".

Espero que esto te ayude a registrar el error.

Respuesta4

De acuerdo a esto:

|| [...] comando1 || comando2 Úselo para ejecutar el siguiente comando || sólo si el comando anterior || falla. Cmd.exe ejecuta el primer comando y luego ejecuta el segundo comando solo si el primer comando no se completó correctamente (recibe un código de error mayor que cero).

y si estás creando ese .exe, solo necesitas ponerpause el comando después de tus oraciones.

Y ejemplo en c++ que llama a bash:

#include <iostream>
#include <windows.h>


using namespace std;

int main()
{
    system("cd  akfhaskfn|| pause");
    system("cd  || pause");

    return 0;
}

Verás que sólo el primero llamará al comando de pausa.

información relacionada