Erro ao tentar gravar entradas para executar o aplicativo de console com um lote
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
Você config.exenão aceita redirecionamento de forma alguma. Requer buffers de console reais.
- 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
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