Errore durante il tentativo di scrivere input nell'app console in esecuzione con un batch
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
Il tuo config.exe
non accetta affatto il reindirizzamento. Richiede veri e propri buffer della console.
- Se vuoi automatizzarlo, puoi creare un'altra applicazione console che lo farà
- inizia a
config.exe
utilizzare CreateProcessW - scrivi le tue linee su STD_INPUT_HANDLE usando WriteFile (ASCII,
\n
linee separate) o WriteConsoleInputW (se hai bisogno di caratteri Unicode) - dopo che la scrittura è completa, è sufficiente attendere la
config.exe
terminazione e restituire il codice di uscita
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