Как автоматизировать ввод пользователя в исполняемый файл? - PullRequest
1 голос
/ 11 июля 2020

У меня есть файл .exe, который при вызове из командной строки Windows сначала подключается к серверу, а затем запрашивает ввод пользователя в качестве подтверждения. Примерно так:

C:\SomePath\AnotherFolder>TheApplication.exe download
Logging in to Vault server myserver.app.cosmos...
Logged in to the Vault server

Downloading will overwrite existing files.
Download scripts for context 'COSMOS' to folder:
 C:\Work\MyFolder\TEST?
(y/n): n  <--- n was my input

Press any key to exit... <--- here i pressed y

Я хочу автоматизировать этот процесс.

Я попробовал следующую строку из командной строки Windows:

 echo n|TheApplication.exe download

Я даже попробовал:

 (echo n && echo y)|TheApplication.exe download  <-- the y for the last user input request to close the app.

Но в обоих случаях он выдает следующую ошибку:

Unhandled Exception: System.InvalidOperationException: Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read.
   at System.Console.ReadKey(Boolean intercept)
   at System.Console.ReadKey()
   at TheApplication.Program.Main(String[] args)

** отказ от ответственности: TheApplication.exe является сторонним исполняемым файлом. Я не могу ничего изменить внутри него.

PS: При необходимости я могу запустить это из консоли PowerShell, если это невозможно из командной строки windows, или я могу также включить все это в пакетный скрипт.

Но как бы то ни было, мне нужно это автоматизировать.

1 Ответ

0 голосов
/ 11 июля 2020

Если вы можете использовать PowerShell ...

autoinput.ps1

Add-Type -AssemblyName System.Windows.Forms
Start-Sleep -m 1000
[System.Windows.Forms.SendKeys]::SendWait("ny")

Команда:

powershell .\autoinput.ps1 & .\TheApplication.exe
...