Bagaimana saya bisa membagi perintah panjang ke beberapa baris dalam file batch?
batch-file
Ondra Žižka
sumber
sumber
^
dan setelah teks perintah Anda.echo
ed.co^␍py ^␍file1 ^␍file2
. Saya sarankan Anda menghapus komentar Anda untuk menghindari kebingungan, terutama karena pencarian ini sangat populerAturan untuk caret adalah:
Tanda sisipan di akhir baris, tambahkan baris berikutnya, karakter pertama dari baris yang ditambahkan akan diloloskan.
Anda dapat menggunakan tanda sisir beberapa kali, tetapi garis lengkap tidak boleh melebihi panjang garis maksimum ~ 8192 karakter (Windows XP, Windows Vista, dan Windows 7).
Untuk menekan keluarnya karakter berikutnya, Anda dapat menggunakan redirection.
Pengalihan harus tepat sebelum tanda sisipan. Tetapi ada satu keingintahuan dengan pengalihan sebelum tanda sisipan.
Jika Anda menempatkan token di caret, token tersebut dihapus.
Dan juga memungkinkan untuk menyematkan umpan baris ke dalam string:
Garis kosong itu penting untuk kesuksesan. Ini hanya berfungsi dengan ekspansi yang tertunda, jika tidak sisa baris akan diabaikan setelah umpan baris.
Ini berfungsi, karena tanda sisipan di ujung baris mengabaikan umpan baris berikutnya dan lolos dari karakter berikutnya, bahkan jika karakter berikutnya juga merupakan umpan baris (carriage return selalu diabaikan dalam fase ini).
sumber
copy ^[newline]"file1.txt" ^[newline]"file2.txt"
tidak berfungsi! Saya harus menambahkan spasi:copy ^[newline] "file1.txt" ^[newline] "file2.txt"
.(Ini pada dasarnya adalah penulisan ulang jawaban Wayne tetapi dengan kebingungan di sekitar tanda sisir menjadi jelas. Jadi saya telah mempostingnya sebagai CW. Saya tidak malu mengedit jawaban, tetapi sepenuhnya menulis ulang sepertinya tidak pantas.)
Anda dapat memecah garis-garis panjang dengan tanda sisipan (
^
), hanya ingat bahwa tanda sisipan dan baris baru yang mengikutinya dihapus seluruhnya dari perintah, jadi jika Anda meletakkannya di tempat spasi akan diperlukan (seperti antara parameter), pastikan untuk memasukkan ruang juga (baik sebelum^
, atau di awal baris berikutnya - bahwa pilihan terakhir dapat membantu membuatnya lebih jelas itu adalah kelanjutan).Contoh: (semua diuji pada Windows XP dan Windows 7)
dapat ditulis sebagai:
atau
atau bahkan
(Yang terakhir berfungsi karena tidak ada spasi di antara
xc
dan dan^
, dan tidak ada spasi di awal baris berikutnya. Jadi, ketika Anda menghapus^
dan baris baru, Anda mendapatkan ....xcopy
)Untuk keterbacaan dan kewarasan, mungkin lebih baik melanggar hanya antara parameter (pastikan untuk memasukkan spasi).
Pastikan bahwa
^
adalah tidak hal terakhir dalam sebuah file batch, karena ada tampaknya menjadi masalah besar dengan itu .sumber
Berbagai perintah dapat dimasukkan dalam tanda kurung dan tersebar di berbagai baris; jadi sesuatu seperti
echo hi && echo hello
bisa dimasukkan seperti ini:Juga variabel dapat membantu:
Saya juga memperhatikan dengan caret (
^
) bahwaif
conditional menyukai mereka untuk mengikuti hanya jika ada ruang:sumber
cmd1.bat && cmd2.bat
berbeda dari bentuk parens: mengeksekusicmd2.bat
iffcmd1.bat
dieksekusi berhasil (-tanpa pengaturan%errorcode%
). Bentuk terakhir dijalankan tanpa syarat. Agak tak terduga (setidaknya bagi saya) adalah bahwa, jelas, Anda tidak dapat menggunakan kombinasi keduanya yaitu menambahkan&&
sebelum jeda baris.( echo <line break here> hello )
menghasilkan baris kosong.Namun tampaknya membelah di tengah-tengah nilai-nilai untuk loop tidak perlu tanda sisipan (dan benar-benar mencoba untuk menggunakan satu akan dianggap sebagai kesalahan sintaksis). Sebagai contoh,
Perhatikan bahwa tidak ada ruang yang dibutuhkan setelah hello atau sebelum tinggal.
sumber
for
sintaksis: pemisah elemen dalam "untuk-set" adalah ruang, koma, titik koma, tanda sama, karakter TAB dan baris baru.do
bagian itu berisiif-else
pernyataan banyak / bertumpuk ?