เกิดข้อผิดพลาดขณะพยายามเขียนอินพุตเพื่อเรียกใช้แอปคอนโซลด้วยแบตช์

Aug 19 2020

ฉันมีไฟล์ exe ที่ต้องการเรียกใช้งานกับไฟล์แบตช์

ไฟล์ exe เป็นแอปคอนโซลของบุคคลที่สามที่จะแจ้งให้ป้อนข้อมูลสามครั้ง

ดังนั้นฉันต้องการเติมมันด้วยบรรทัดว่าง someText และ someOtherText

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

แต่ฉันได้รับข้อผิดพลาดนี้:

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

สิ่งที่อาจเป็นปัญหาโปรดให้คำแนะนำอย่างน้อยทิศทางในการค้นหา?

ฉันมีข้อผิดพลาดเดียวกันแม้ว่าจะพยายามดำเนินการคำสั่งที่ง่ายกว่าเช่น:

echo. | call config.exe remove

คำตอบ

1 Maximus Aug 27 2020 at 08:53

ของคุณconfig.exeไม่ยอมรับการเปลี่ยนเส้นทางเลย ต้องใช้บัฟเฟอร์คอนโซลจริง

  1. หากคุณต้องการทำให้เป็นอัตโนมัติคุณสามารถสร้างแอปพลิเคชันคอนโซลอื่นซึ่งจะ
  • เริ่มต้นของคุณconfig.exeโดยใช้CreateProcessW
  • เขียนเส้นของคุณเป็นSTD_INPUT_HANDLEโดยใช้WriteFile (ASCII, \nเส้นคั่น) หรือWriteConsoleInputW (หากคุณต้องการอักขระ Unicode)
  • หลังจากเขียนเสร็จแล้วให้รอการconfig.exeยกเลิกและส่งคืนรหัสทางออก
  1. อีกทางเลือกหนึ่งที่ง่ายกว่าคือConEmu terminal (ฉันเป็นคนเขียน) มีการเขียนสคริปต์ GuiMacroซึ่งสามารถใช้งานได้ง่ายจากคอนโซล ดังนั้นคุณสามารถเรียกใช้จากพรอมต์ของคุณหรือรวมเป็นแบตช์ไฟล์ (รันใน ConEmu)

    ConEmuC.exe -GuiMacro พิมพ์ "\ nsomeText \ nsome ข้อความอื่น ๆ \ n" และลบ config.exe