Apakah aman untuk menulis file batch dengan akhiran baris Unix?

15

Saya pikir saya menemukan bug dalam file batch karena ditulis dengan akhiran baris unix. Apakah ini masalah yang diketahui dengan cmd.exe menjalankan file batch di windows?

cmcginty
sumber
1
Saya tidak pernah punya masalah, dan saya selalu menggunakan akhiran baris unix. Tetapi itu tidak berarti bahwa tidak ada masalah yang baru saja saya lewatkan.
Zoredache
2
Bug mana yang Anda temui? Perintah gagal memulai? Atau hanya itu tampak seolah-olah tidak ada ujung garis ketika Anda membuka file dengan notepad?
Hennes

Jawaban:

11

Ini benar-benar bukan "bug" ... karena itu adalah desain. Windows baris baru didefinisikan sebagai "\ r \ n" ... atau kombinasi "Carriage Return" dan "New Line" ... sedangkan * nix flavours lebih suka menghilangkan carriage return. Anda harus selalu menggunakan "\ r \ n" di apa pun di Windows jika memungkinkan. Yang lain mungkin ditafsirkan salah ... dan menyebabkan banyak hasil yang tidak terduga.

TheCompWiz
sumber
Saya menemukan masalah di mana panggilan: label tidak melompat ke label, tetapi panggilan yang sama kemudian pada file itu melompat ke label. File yang dimaksud menggunakan akhiran \ n baris. Saya beralih ke akhiran baris untuk semua file batch di proyek saya dan masalahnya hilang. Saya tidak menguji ulang dengan ujung untuk memastikan itu bukan hanya kebetulan satu kali (skrip membutuhkan waktu hampir satu jam untuk menjalankan).
Samuel
2
Notepad tidak dapat menangani ujung jalur Unix, tetapi WordPad dapat, PowerShell dapat, banyak hal lainnya juga dapat.
Michael Hampton
Cam Anda memberikan beberapa contoh lagi ketika file .bat tidak bekerja dengan benar dengan ujung garis nix?
Michal Kordas
@MichalKordas Tanpa melalui dan menguji setiap versi dari setiap OS Microsoft dan distribusi * nix, itu agak sulit untuk diberikan. Ini sebenarnya bukan tempat untuk membahas diskusi terperinci tentang masalah ini. Praktik terbaik adalah Windows menggunakan \ r \ n, * nix using \ n, dan kadang-kadang mac hanya menggunakan \ r. Karena Hanya Windows yang menggunakan file batch, yang terbaik adalah menganggap Anda harus menggunakan \ r \ n.
TheCompWiz
4

Ini tampaknya bahwa bets label yang dilewati ketika LF(Unix line-akhir) digunakan dalam .batberkas.

go2null
sumber
3

Untuk file batch sepertinya tidak ada perbedaan antara ujung baris unix dan ujung baris windows.

goto, callatau bahkan pembuatan variabel linefeed bekerja dengan kedua gaya.

Dan karena pengurai batch menghapus pengembalian carriage langsung setelah fase ekspansi persen, mereka tidak akan pernah memainkan peran besar.

jeb
sumber