การเขียนแบตช์ไฟล์ด้วยปลายสาย Unix ปลอดภัยหรือไม่?


15

ฉันคิดว่าฉันพบข้อผิดพลาดในไฟล์แบตช์เพราะมันเขียนด้วยการจบบรรทัด unix นี่เป็นปัญหาที่ทราบกันดีกับ cmd.exe ที่เรียกใช้ไฟล์แบตช์ใน windows หรือไม่?


1
ฉันไม่เคยมีปัญหาและฉันมักใช้จุดปลายของยูนิกซ์เสมอ แต่นั่นไม่ได้หมายความว่าไม่มีปัญหาฉันเพิ่งโชคดีพอที่จะพลาด
Zoredache

2
ข้อผิดพลาดใดที่คุณพบ คำสั่งล้มเหลวในการเริ่ม? หรือว่ามันดูราวกับว่ายังไม่มีจุดสิ้นสุดของบรรทัดเมื่อคุณเปิดไฟล์ด้วย notepad?
Hennes

คำตอบ:


11

นี่ไม่ใช่ข้อผิดพลาดจริง ๆ ... เนื่องจากเป็นแบบ บรรทัดใหม่ของ Windows ถูกกำหนดเป็น "\ r \ n" ... หรือชุด "Carriage Return" และ "New Line" ... ในขณะที่รสชาติ * ระวังจะไม่สนใจการคืนตลับหมึก คุณควรใช้ "\ r \ n" ในทุกสิ่งใน Windows หากเป็นไปได้ สิ่งอื่นใดอาจตีความได้ไม่ถูกต้อง ... และทำให้เกิดผลลัพธ์ที่คาดไม่ถึงอย่างมาก


ฉันเจอปัญหาที่การโทร: ป้ายกำกับไม่ได้ข้ามไปที่ป้ายกำกับ แต่การโทรเดียวกันในภายหลังบนไฟล์ไม่ได้ข้ามไปที่ป้ายกำกับ ไฟล์ที่เป็นปัญหากำลังใช้ \ n การสิ้นสุดบรรทัด ฉันเปลี่ยนไปที่ \ r \ n การสิ้นสุดบรรทัดสำหรับแบตช์ไฟล์ทั้งหมดในโครงการของฉันและปัญหาได้หายไป ฉันไม่ได้ทดสอบอีกครั้งกับ \ n ตอนจบเพื่อยืนยันว่าไม่ใช่แค่ความบังเอิญครั้งเดียว (สคริปต์ใช้เวลาเกือบหนึ่งชั่วโมงในการรัน)
ซามูเอล

2
Notepad ไม่สามารถจัดการกับจุดสิ้นสุดบรรทัด Unix ได้ แต่ WordPad สามารถ, PowerShell สามารถ, และสิ่งอื่น ๆ อีกมากมายสามารถทำได้เช่นกัน
Michael Hampton

คุณให้ตัวอย่างเพิ่มเติมเมื่อไฟล์. bat ไม่ทำงานอย่างถูกต้องกับการลงท้ายด้วย nix line?
Michal Kordas

@MichalKordas โดยไม่ต้องผ่านการทดสอบและทุกรุ่นของทุกระบบปฏิบัติการ Microsoft และการกระจาย * ระวังนั่นเป็นคำสั่งที่สูงที่จะให้ นี่ไม่ใช่สถานที่สำหรับการอภิปรายโดยละเอียดเกี่ยวกับเรื่องนี้ แนวทางปฏิบัติที่ดีที่สุดคือ Windows ใช้ \ r \ n, * nix ใช้ \ n และบางครั้ง mac ใช้เพียง a \ r เนื่องจาก Windows เท่านั้นที่ใช้ไฟล์แบตช์คุณควรใช้ \ r \ n
TheCompWiz


3

สำหรับไฟล์แบทช์ดูเหมือนว่าไม่แตกต่างกันระหว่างการสิ้นสุดบรรทัดของยูนิกซ์และการสิ้นสุดบรรทัดของ windows

goto, callหรือแม้กระทั่งการสร้างตัวแปรเลื่อนบรรทัดทำงานร่วมกับทั้งสองรูปแบบ

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

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