ฉันเปลี่ยนเส้นทางเอาต์พุตของแบตช์ไฟล์เป็นไฟล์ข้อความและไม่ต้องการบรรทัดว่างระหว่างแต่ละคำสั่ง ฉันรู้ว่าฉันสามารถโพสต์กระบวนการด้วย Perl หนึ่งซับ แต่จะไม่ มีตัวเลือกในการระงับบรรทัดว่างที่ไม่จำเป็นเหล่านี้หรือไม่?
ฉันเปลี่ยนเส้นทางเอาต์พุตของแบตช์ไฟล์เป็นไฟล์ข้อความและไม่ต้องการบรรทัดว่างระหว่างแต่ละคำสั่ง ฉันรู้ว่าฉันสามารถโพสต์กระบวนการด้วย Perl หนึ่งซับ แต่จะไม่ มีตัวเลือกในการระงับบรรทัดว่างที่ไม่จำเป็นเหล่านี้หรือไม่?
คำตอบ:
cmd
ส่งออกบรรทัดใหม่เสมอก่อนที่จะพิมพ์พรอมต์ของมัน ซึ่งหมายความว่าสิ่งที่ชอบ
> echo foo
foo
> _
จะมีบรรทัดว่างนั้นเสมอเนื่องจากecho
พิมพ์ตัวแบ่งบรรทัดโดยอัตโนมัติ อย่างไรก็ตามสิ่งที่ชอบ
> set /p x=foo<nul
foo
> _
จะไม่มีบรรทัดว่างในระหว่างเนื่องจากด้านบนเป็นเคล็ดลับที่อนุญาตให้พิมพ์สิ่งต่าง ๆโดยไม่มีการแบ่งบรรทัดต่อท้าย ยังคงพรอมต์ปรากฏที่จุดเริ่มต้นของบรรทัดถัดไป
สิ่งนี้น่าจะทำเพื่อให้พรอมต์อยู่เสมอที่จุดเริ่มต้นของบรรทัดโดยไม่คำนึงถึงความสับสนของเอาต์พุตของคำสั่งสุดท้าย ในชอบ UNIX มันเป็นเรื่องธรรมดาที่จะพบพรอมต์ของคุณตรงกลางบรรทัดเนื่องจากคำสั่งสุดท้ายไม่ได้พิมพ์บรรทัดใหม่
แต่ดูเหมือนจะไม่มีทางที่จะป้องกันพฤติกรรมของเขา
คุณสามารถท่อสิ่งที่คุณทำผ่านได้อย่างง่ายดาย
findstr /r /v /c:"^$"
แม้
สิ่งนี้ขึ้นอยู่กับคำสั่งที่คุณใช้เนื่องจากอาจมีการกำหนดค่าให้ทำหลังจากรันแล้ว - คุณต้องการดูว่ามีตัวเลือกที่ไม่ใช้ verbose หรือไม่ (อย่างไรก็ตามฉันสงสัยว่านี่จะช่วยได้)
สิ่งอื่น ๆ ที่ควรลองคือการใส่สิ่งนี้ไว้ที่จุดเริ่มต้น:
@ ปิดเสียง
แต่น่าเสียดายที่ฉันไม่คิดว่าคุณจะมีโชคมากเพราะฉันคิดว่าคำสั่งทั้งหมดวางเส้นแบ่งหลังจากพวกเขาเสร็จสิ้น (มันเป็นสิ่งที่ผลตอบแทน / นำขึ้นพรอมต์คำสั่งเมื่อเสร็จสิ้น
ทางออกที่ดีที่สุดของคุณคือการใช้เครื่องมือการโพสต์และเพียงแค่ลบตัวแบ่งบรรทัด แต่ฉันไม่รู้จักที่จะแนะนำ
"\015"
) และ 2) เคลียร์จากเคอร์เซอร์จนถึงปลายบรรทัด (ESC + [2K,"\033[2K"
)