Terjadi error saat mencoba menulis input ke menjalankan aplikasi konsol dengan batch

Aug 19 2020

Saya memiliki file exe yang ingin saya jalankan dengan file batch.

File exe adalah aplikasi konsol pihak ketiga yang akan meminta input tiga kali.

Jadi saya ingin mengisinya dengan baris kosong, someText dan someOtherText

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

Tapi saya mendapatkan kesalahan ini:

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

Apa yang bisa menjadi masalah, mohon setidaknya arahan untuk mencari?

Saya memiliki kesalahan yang sama bahkan jika mencoba menjalankan perintah yang lebih sederhana seperti:

echo. | call config.exe remove

Jawaban

1 Maximus Aug 27 2020 at 08:53

Anda sama config.exesekali tidak menerima pengalihan. Ini membutuhkan buffer konsol yang nyata.

  1. Jika Anda ingin mengotomatiskannya, Anda dapat membuat aplikasi konsol lain yang akan melakukannya
  • mulai Anda config.exemenggunakan CreateProcessW
  • tulis baris Anda ke STD_INPUT_HANDLE menggunakan WriteFile (ASCII, \nbaris terpisah) atau WriteConsoleInputW (jika Anda memerlukan karakter unicode)
  • setelah penulisan selesai, tunggu saja config.exeterminasi dan kembalikan kode keluar
  1. Opsi lain yang lebih sederhana adalah terminal ConEmu (saya penulisnya). Ada skrip GuiMacro yang dapat dengan mudah digunakan dari konsol. Jadi Anda bisa menjalankan dari prompt Anda atau membungkusnya dalam file batch (jalankan di ConEmu):

    ConEmuC.exe -GuiMacro print "\ nsomeText \ nsome Other Text \ n" & config.exe hapus