เกิดข้อผิดพลาดขณะพยายามเขียนอินพุตเพื่อเรียกใช้แอปคอนโซลด้วยแบตช์
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
ไม่ยอมรับการเปลี่ยนเส้นทางเลย ต้องใช้บัฟเฟอร์คอนโซลจริง
- หากคุณต้องการทำให้เป็นอัตโนมัติคุณสามารถสร้างแอปพลิเคชันคอนโซลอื่นซึ่งจะ
- เริ่มต้นของคุณ
config.exe
โดยใช้CreateProcessW - เขียนเส้นของคุณเป็นSTD_INPUT_HANDLEโดยใช้WriteFile (ASCII,
\n
เส้นคั่น) หรือWriteConsoleInputW (หากคุณต้องการอักขระ Unicode) - หลังจากเขียนเสร็จแล้วให้รอการ
config.exe
ยกเลิกและส่งคืนรหัสทางออก
อีกทางเลือกหนึ่งที่ง่ายกว่าคือConEmu terminal (ฉันเป็นคนเขียน) มีการเขียนสคริปต์ GuiMacroซึ่งสามารถใช้งานได้ง่ายจากคอนโซล ดังนั้นคุณสามารถเรียกใช้จากพรอมต์ของคุณหรือรวมเป็นแบตช์ไฟล์ (รันใน ConEmu)
ConEmuC.exe -GuiMacro พิมพ์ "\ nsomeText \ nsome ข้อความอื่น ๆ \ n" และลบ config.exe