Error al intentar escribir entradas en la aplicación de consola en ejecución con un lote
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
Tu config.exe
no acepta redirecciones en absoluto. Requiere búferes de consola reales.
- Si desea automatizarlo, puede crear otra aplicación de consola que
- comience a
config.exe
usar CreateProcessW - escriba sus líneas en STD_INPUT_HANDLE usando WriteFile (ASCII,
\n
líneas separadas) o WriteConsoleInputW (si necesita caracteres Unicode) - después de que se complete la escritura, solo espere la
config.exe
terminación y devuelva el código de salida
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