Erro ao tentar gravar entradas para executar o aplicativo de console com um lote

Aug 19 2020

Tenho um arquivo exe que desejo executar com um arquivo em lote.

O arquivo Exe é um aplicativo de console de terceiros que solicitará a entrada três vezes.

Então, quero preenchê-lo com uma linha vazia, someText e someOtherText

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

Mas estou recebendo este erro:

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

Qual pode ser o problema, por favor, aconselhe pelo menos a direção a pesquisar?

Eu tenho o mesmo erro, mesmo se tentar executar um comando mais simples como:

echo. | call config.exe remove

Respostas

1 Maximus Aug 27 2020 at 08:53

Você config.exenão aceita redirecionamento de forma alguma. Requer buffers de console reais.

  1. Se você deseja automatizá-lo, você pode criar outro aplicativo de console que irá
  • comece seu config.exeusando CreateProcessW
  • escreva suas linhas em STD_INPUT_HANDLE usando WriteFile (ASCII, \nlinhas separadas) ou WriteConsoleInputW (se você precisar de caracteres Unicode)
  • após a conclusão da gravação, espere o config.exetérmino e retorne o código de saída
  1. Outra opção mais simples é o terminal ConEmu (eu sou o autor). Existe o script GuiMacro que pode ser facilmente usado no console. Portanto, você pode apenas executar a partir do prompt ou agrupar no arquivo em lote (executar no ConEmu):

    ConEmuC.exe -GuiMacro print "\ nalgumTexto \ nalgum Outro Texto \ n" & config.exe remover