Bagaimana saya bisa gema sebuah baris baru dalam file batch?
Bagaimana anda bisa anda menyisipkan sebuah baris baru dari batch file output?
Aku ingin melakukan sesuatu seperti:
echo hello\nworld
Yang akan output:
hello
world
603
18
Gunakan:
echo halo & echo.dunia
Ini berarti anda bisa menentukan
& echo.
sebagai konstan untuk newline\n
.Di sini anda pergi, membuat .bat file dengan kode berikut di dalamnya :
Anda akan melihat output seperti berikut:
Anda hanya perlu kode antara REM pernyataan, jelas.
Ada fitur standar
echo:
di cmd/bat file untuk menulis baris kosong, yang mengemulasi baris baru di cmd-output:Output yang dikutip di atas cmd-file:
Seperti jawaban dari Ken, tapi dengan menggunakan perluasan tertunda.
Pertama tunggal linefeed karakter yang diciptakan dan ditugaskan untuk \n-variabel. Ini bekerja sebagai sisipan di garis akhir mencoba untuk melarikan diri karakter berikutnya, tetapi jika ini adalah Linefeed hal ini diabaikan dan karakter berikutnya adalah membaca dan melarikan diri (bahkan jika ini juga linefeed). Maka anda perlu ketiga linefeed untuk mengakhiri instruksi saat ini, lain baris ketiga akan ditambahkan ke LF-variabel. Bahkan batch file yang memiliki akhiran dengan CR/LF hanya LF yang penting, seperti CR's dihapus pada fase ini dari parser.
Keuntungan menggunakan tertunda ekspansi adalah, bahwa tidak ada karakter khusus penanganan sama sekali.
echo Line1%LF%Line2
akan gagal, karena parsing parser berhenti di satu linefeeds.Penjelasan lebih lanjut ada di JADI:perintah yang Panjang dibagi atas beberapa baris di Vista/DOS batch (.bat) file JADI:Bagaimana Windows Command Interpreter (CMD.EXE) parse script?
Edit: Menghindari
echo.
Ini doesn't menjawab pertanyaan, seperti pertanyaan tentang single
echo
yang dapat menampilkan beberapa baris.Tapi meskipun jawaban lain yang menunjukkan penggunaan
echo.
untuk membuat baris baru, perlu dicatat bahwaecho.
adalah yang terburuk, karena itu's sangat lambat dan itu dapat benar-benar gagal, karena cmd.exe mencari sebuah file bernamaECHO
dan mencoba untuk memulai itu.Untuk mencetak hanya sebuah baris kosong, anda bisa menggunakan salah satu dari
Tetapi penggunaan
echo.
,echo\
atauecho:
harus dihindari, karena mereka dapat benar-benar lambat, tergantung dari lokasi dimana script akan dieksekusi, seperti drive jaringan.echo.
Cukup kata.Jika anda membutuhkannya dalam satu baris, gunakan
&
. Misalnya,akan output seperti:
Sekarang, katakanlah anda ingin sesuatu yang sedikit lebih menarik, ...
Output
Kemudian hanya melempar
%n%
kapanpun anda inginkan baris baru di gema pernyataan. Ini lebih dekat dengan anda\n
yang digunakan dalam berbagai bahasa.Kerusakan
set n=
set variabeln
sama dengan:^
Nulls keluar berikutnya simbol untuk mengikuti:&
Berarti melakukan perintah lain pada baris yang sama. Kami don't peduli tentang errorlevel(its gema pernyataan untuk menangis dengan suara keras), sehingga tidak ada&&
yang dibutuhkan.echo.
Terus menggemakan pernyataan.Semua ini bekerja karena anda benar-benar dapat membuat variabel itu adalah kode, dan menggunakan mereka dalam perintah lain. Itu adalah semacam ghetto fungsi, karena batch yang tidak tepat yang paling canggih dari shell scripting bahasa. Ini hanya bekerja karena batch's buruk penggunaan variabel, tidak menunjuk antara int, karakter, float, string, dll secara alami.
Jika anda cerdik, anda bisa mendapatkan ini untuk bekerja dengan hal-hal lain. Misalnya, menggunakannya untuk echo tab
Ketika menggemakan sesuatu untuk mengarahkan ke file, beberapa perintah echo tidak akan bekerja. Saya pikir mungkin ">>" redirector adalah pilihan yang baik:
Seperti Grimtron menunjukkan - berikut adalah contoh cepat untuk mendefinisikannya:
Output
Jika anda perlu untuk menempatkan hasil ke file, anda dapat menggunakan
Anda juga dapat melakukan seperti ini,
Output akan,
Perhatikan bahwa saat ini dimasukkan ke dalam sebuah batch file, '%' akan menjadi dua kali lipat.
Jika ada orang datang ke sini karena mereka adalah tempat yang sempurna untuk echo baris kosong dari MINGW membuat makefile, saya digunakan
@cmd /c echo.
hanya menggunakan
echo.
penyebab ditakutiprocess_begin: CreateProcess(NULL, echo., ...) gagal.
pesan kesalahan.Saya harap ini membantu setidaknya satu orang lain di luar sana :)
Untuk memulai baris baru dalam batch, semua harus anda lakukan adalah menambahkan "echo[", seperti:
Ini bekerja untuk saya, tidak ada yang tertunda ekspansi yang diperlukan:
Menulis output seperti ini:
Ken dan Jeb solusi bekerja dengan baik.
Tapi garis baru yang dihasilkan dengan hanya satu karakter LF dan saya perlu CRLF karakter (versi Windows).
Untuk ini, di akhir naskah, saya telah dikonversi LF untuk CRLF.
Contoh:
Jika salah satu kebutuhan untuk menggunakan terkenal \n pada string literal yang dapat dilalui untuk sebuah variabel, dapat menulis kode seperti di Halo.bat script di bawah ini:
Cara ini multiline output dapat disusun dalam satu tempat, bahkan di lain scritpt atau file eksternal, dan dicetak di tempat lain.
Line break diadakan di newline variabel. Nilainya harus diganti setelah the echo garis diperluas jadi saya menggunakan setlocal enableDelayedExpansion untuk mengaktifkan seru tanda-tanda yang memperluas variabel yang di eksekusi. Dan eksekusi pengganti \n dengan newline isi (lihat sintaks di membantu mengatur). Kita bisa saja menggunakan !baris baru! sementara pengaturan jawaban tapi \n lebih nyaman. Mungkin berlalu dari luar (coba Halo R2\nD2), di mana tidak ada yang tahu nama variabel yang memegang garis putus (Ya, Halo C3!newline!P0 bekerja dengan cara yang sama).
Contoh di atas dapat disempurnakan untuk subrutin atau mandiri batch, yang digunakan seperti
call:mlecho Hi\nI'm anda comuter
:Harap dicatat, bahwa tambahan backslash won't mencegah script dari parsing \n substring.
Anda dapat menggunakan
@echo
( @echo + [space] + [insecable spasi] )Catatan: insecable ruang dapat diperoleh dengan Alt+0160
Semoga membantu :)
[edit] Hmm anda're kanan, aku membutuhkannya dalam Makefile, ia bekerja dengan sempurna di sana. Saya kira jawaban saya adalah tidak disesuaikan untuk batch file... Saya buruk.
Saya dapat't membuat sederhana dari:
Karakter yang paling konservatif cara untuk mencapai hal ini dalam sistem linux, adalah dengan
-e
alias - yang menafsirkan lolos karakter yang backslashed.Berikut ini adalah lain contoh