วิธีการหยุดบรรทัดคำสั่ง Windows จากการแสดงบรรทัดว่างหลังจากแต่ละคำสั่ง?


5

ฉันเปลี่ยนเส้นทางเอาต์พุตของแบตช์ไฟล์เป็นไฟล์ข้อความและไม่ต้องการบรรทัดว่างระหว่างแต่ละคำสั่ง ฉันรู้ว่าฉันสามารถโพสต์กระบวนการด้วย Perl หนึ่งซับ แต่จะไม่ มีตัวเลือกในการระงับบรรทัดว่างที่ไม่จำเป็นเหล่านี้หรือไม่?

คำตอบ:


4

cmdส่งออกบรรทัดใหม่เสมอก่อนที่จะพิมพ์พรอมต์ของมัน ซึ่งหมายความว่าสิ่งที่ชอบ

> echo foo
foo

> _

จะมีบรรทัดว่างนั้นเสมอเนื่องจากechoพิมพ์ตัวแบ่งบรรทัดโดยอัตโนมัติ อย่างไรก็ตามสิ่งที่ชอบ

> set /p x=foo<nul
foo
> _

จะไม่มีบรรทัดว่างในระหว่างเนื่องจากด้านบนเป็นเคล็ดลับที่อนุญาตให้พิมพ์สิ่งต่าง ๆโดยไม่มีการแบ่งบรรทัดต่อท้าย ยังคงพรอมต์ปรากฏที่จุดเริ่มต้นของบรรทัดถัดไป

สิ่งนี้น่าจะทำเพื่อให้พรอมต์อยู่เสมอที่จุดเริ่มต้นของบรรทัดโดยไม่คำนึงถึงความสับสนของเอาต์พุตของคำสั่งสุดท้าย ในชอบ UNIX มันเป็นเรื่องธรรมดาที่จะพบพรอมต์ของคุณตรงกลางบรรทัดเนื่องจากคำสั่งสุดท้ายไม่ได้พิมพ์บรรทัดใหม่

แต่ดูเหมือนจะไม่มีทางที่จะป้องกันพฤติกรรมของเขา

คุณสามารถท่อสิ่งที่คุณทำผ่านได้อย่างง่ายดาย

findstr /r /v /c:"^$"

แม้


บน UNIX คุณสามารถใส่ลำดับการควบคุมในพรอมต์ของคุณเป็น 1) ไปที่จุดเริ่มต้นของบรรทัดปัจจุบัน (CR, "\015") และ 2) เคลียร์จากเคอร์เซอร์จนถึงปลายบรรทัด (ESC + [2K, "\033[2K")
Mike DeSimone

1
ฉันคิดถึงบางสิ่งเกี่ยวกับ Windows ที่เป็น UNIX หรือไม่?
Joey

ไม่ใช่ไวยากรณ์ที่น่ารัก แต่ใช้ได้ - ขอบคุณ
Umber Ferrule

0

สิ่งนี้ขึ้นอยู่กับคำสั่งที่คุณใช้เนื่องจากอาจมีการกำหนดค่าให้ทำหลังจากรันแล้ว - คุณต้องการดูว่ามีตัวเลือกที่ไม่ใช้ verbose หรือไม่ (อย่างไรก็ตามฉันสงสัยว่านี่จะช่วยได้)

สิ่งอื่น ๆ ที่ควรลองคือการใส่สิ่งนี้ไว้ที่จุดเริ่มต้น:

@ ปิดเสียง

แต่น่าเสียดายที่ฉันไม่คิดว่าคุณจะมีโชคมากเพราะฉันคิดว่าคำสั่งทั้งหมดวางเส้นแบ่งหลังจากพวกเขาเสร็จสิ้น (มันเป็นสิ่งที่ผลตอบแทน / นำขึ้นพรอมต์คำสั่งเมื่อเสร็จสิ้น

ทางออกที่ดีที่สุดของคุณคือการใช้เครื่องมือการโพสต์และเพียงแค่ลบตัวแบ่งบรรทัด แต่ฉันไม่รู้จักที่จะแนะนำ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.