Errore durante il tentativo di scrivere input nell'app console in esecuzione con un batch

Aug 19 2020

Ho un file exe che voglio eseguire con un file batch.

Il file exe è un'app console di terze parti che richiederà l'input tre volte.

Quindi voglio riempirlo con una riga vuota, someText e someOtherText

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

Ma ricevo questo errore:

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

Quale potrebbe essere il problema, si prega di avvisare almeno la direzione in cui cercare?

Ho lo stesso errore anche se provo a eseguire un comando più semplice come:

echo. | call config.exe remove

Risposte

1 Maximus Aug 27 2020 at 08:53

Il tuo config.exenon accetta affatto il reindirizzamento. Richiede veri e propri buffer della console.

  1. Se vuoi automatizzarlo, puoi creare un'altra applicazione console che lo farà
  • inizia a config.exeutilizzare CreateProcessW
  • scrivi le tue linee su STD_INPUT_HANDLE usando WriteFile (ASCII, \nlinee separate) o WriteConsoleInputW (se hai bisogno di caratteri Unicode)
  • dopo che la scrittura è completa, è sufficiente attendere la config.exeterminazione e restituire il codice di uscita
  1. Un'altra opzione più semplice è il terminale ConEmu (sono l'autore). C'è lo scripting GuiMacro che potrebbe essere facilmente utilizzato dalla console. Quindi potresti semplicemente eseguire dal tuo prompt o avvolgere in un file batch (eseguito in ConEmu):

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