Error al intentar escribir entradas en la aplicación de consola en ejecución con un lote

Aug 19 2020

Tengo un archivo exe que quiero ejecutar con un archivo por lotes.

El archivo .exe es una aplicación de consola de terceros que solicitará la entrada tres veces.

Así que quiero completarlo con una línea vacía, someText y someOtherText

(echo. echo someText echo someOtherText) | call config.exe remove

Pero recibo este error:

Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.

¿Cuál podría ser el problema? Por favor, indique al menos la dirección a buscar.

Tengo el mismo error incluso si intento ejecutar un comando más simple como:

echo. | call config.exe remove

Respuestas

1 Maximus Aug 27 2020 at 08:53

Tu config.exeno acepta redirecciones en absoluto. Requiere búferes de consola reales.

  1. Si desea automatizarlo, puede crear otra aplicación de consola que
  • comience a config.exeusar CreateProcessW
  • escriba sus líneas en STD_INPUT_HANDLE usando WriteFile (ASCII, \nlíneas separadas) o WriteConsoleInputW (si necesita caracteres Unicode)
  • después de que se complete la escritura, solo espere la config.exeterminación y devuelva el código de salida
  1. Otra opción más sencilla es el terminal ConEmu (yo soy el autor). Hay secuencias de comandos GuiMacro que se pueden usar fácilmente desde la consola. Por lo tanto, puede ejecutar desde su indicador o envolver en un archivo por lotes (ejecutar en ConEmu):

    ConEmuC.exe -GuiMacro print "\ nsomeText \ nsome Other Text \ n" & config.exe eliminar