Terjadi error saat mencoba menulis input ke menjalankan aplikasi konsol dengan batch
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
Anda sama config.exe
sekali tidak menerima pengalihan. Ini membutuhkan buffer konsol yang nyata.
- Jika Anda ingin mengotomatiskannya, Anda dapat membuat aplikasi konsol lain yang akan melakukannya
- mulai Anda
config.exe
menggunakan CreateProcessW - tulis baris Anda ke STD_INPUT_HANDLE menggunakan WriteFile (ASCII,
\n
baris terpisah) atau WriteConsoleInputW (jika Anda memerlukan karakter unicode) - setelah penulisan selesai, tunggu saja
config.exe
terminasi dan kembalikan kode keluar
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