Erreur lors de la tentative d'écriture des entrées dans l'application console en cours d'exécution avec un lot

Aug 19 2020

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

1 Maximus Aug 27 2020 at 08:53

Votre config.exen'accepte pas du tout la redirection. Il nécessite de vrais tampons de console.

  1. Si vous souhaitez l'automatiser, vous pouvez créer une autre application console qui
  • commencez à config.exeutiliser CreateProcessW
  • écrivez vos lignes dans STD_INPUT_HANDLE en utilisant WriteFile (ASCII, \nlignes séparées) ou WriteConsoleInputW (si vous avez besoin de caractères Unicode)
  • une fois l'écriture terminée, attendez simplement la config.exefin et renvoyez le code de sortie
  1. 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