Erreur lors de la tentative d'écriture des entrées dans l'application console en cours d'exécution avec un lot
J'ai un fichier exe que je souhaite exécuter avec un fichier batch.
Le fichier Exe est une application de console tierce qui demandera une entrée trois fois.
Je veux donc le remplir avec une ligne vide, someText et someOtherText
(echo. echo someText echo someOtherText) | call config.exe remove
Mais j'obtiens cette erreur:
Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.
Quel pourrait être le problème, veuillez indiquer au moins la direction de la recherche?
J'ai la même erreur même si j'essaye d'exécuter une commande plus simple comme:
echo. | call config.exe remove
Réponses
Votre config.exe
n'accepte pas du tout la redirection. Il nécessite de vrais tampons de console.
- Si vous souhaitez l'automatiser, vous pouvez créer une autre application console qui
- commencez à
config.exe
utiliser CreateProcessW - écrivez vos lignes dans STD_INPUT_HANDLE en utilisant WriteFile (ASCII,
\n
lignes séparées) ou WriteConsoleInputW (si vous avez besoin de caractères Unicode) - une fois l'écriture terminée, attendez simplement la
config.exe
fin et renvoyez le code de sortie
Une autre option plus simple est le terminal ConEmu (je suis l'auteur). Il existe des scripts GuiMacro qui peuvent être facilement utilisés à partir de la console. Ainsi, vous pouvez simplement exécuter à partir de votre invite ou encapsuler dans un fichier de commandes (exécuter dans ConEmu):
ConEmuC.exe -GuiMacro print "\ nsomeText \ nsome Other Text \ n" & config.exe remove