Saya telah menulis file MS DOS Batch yang sangat besar. Untuk menguji file batch ini saya hanya perlu menjalankan beberapa baris dan ingin menyembunyikan / mengomentari yang tersisa.
Saya memiliki beberapa baris komentar yang sudah ada yang dimulai dengan ::
itu saya tidak dapat menggunakan ::
lagi karena akan mengacak semua komentar.
Bagaimana saya bisa mengatasi masalah ini?
batch-file
comments
dos
pengguna219628
sumber
sumber
REM
baris sebagai baris komentar, itu membuat keluaran tidak jelasJika Anda ingin menambahkan REM di awal setiap baris daripada menggunakan GOTO, Anda dapat menggunakan Notepad ++ untuk melakukannya dengan mudah dengan mengikuti langkah-langkah berikut:
Ulangi langkah untuk menghapus komentar
sumber
Ctrl-Q
, klik diNotepad++
:Edit -> Comment/Uncomment
.Meskipun
goto
solusinya adalah opsi yang baik, itu tidak akan berfungsi dalam tanda kurung (termasuk perintah FOR dan IF). Tapi ini akan berhasil. Meskipun Anda harus berhati-hati saat menutup tanda kurung dan sintaksFOR
danIF
perintah yang tidak valid karena keduanya akan diurai.Memperbarui
Pembaruan dalam jawaban dbenham memberi saya beberapa ide. Pertama - ada dua kasus berbeda di mana kita membutuhkan komentar multi baris - dalam konteks braket di mana GOTO tidak dapat digunakan dan di luarnya. Di dalam konteks tanda kurung kita dapat menggunakan tanda kurung lain jika ada kondisi yang mencegah kode untuk dieksekusi, meskipun kode tersebut masih akan diurai dan beberapa kesalahan sintaks akan terdeteksi (
FOR
,IF
tanda kurung yang tidak benar, ekspansi parameter yang salah ..). Jadi jika memungkinkan lebih baik gunakan GOTO.Meskipun tidak mungkin membuat makro / variabel yang digunakan sebagai label - tetapi dimungkinkan untuk menggunakan makro untuk komentar braket. Namun dua trik dapat digunakan untuk membuat komentar GOTO lebih simetris dan lebih menyenangkan (setidaknya untuk saya). Untuk ini, saya akan menggunakan dua trik - 1) Anda dapat meletakkan satu simbol di depan label dan goto masih dapat menemukannya (saya tidak tahu mengapa ini. Petunjuk saya adalah mencari drive). 2) Anda dapat menempatkan satu
:
di akhir nama variabel dan fitur penggantian / subtring tidak akan dipicu (bahkan di bawah ekstensi yang diaktifkan). Yang dikombinasikan dengan makro untuk komentar tanda kurung dapat membuat kedua kasus terlihat hampir sama.Jadi inilah contohnya (dalam urutan yang paling saya sukai):
Dengan tanda kurung persegi panjang :
Dengan tanda kurung kurawal :
Dengan tanda kurung :
Campuran antara PowerShell dan C gaya (
<
tidak dapat digunakan karena pengalihan dengan prio lebih tinggi*
tidak dapat digunakan karena%*
):Untuk menekankan itu adalah komentar (menurut saya tidak terlalu pendek):
sumber
rem.||(
ataurem^ (
sebaliknya. Maksudnya sedikit lebih jelas. Lihat jawaban terbaru saya.%rem:%
+%:rem%
bentuk juga untuk membuatnya lebih jelas meskipun akan kehilangan pesonanya. Atau hanya garis miring agar lebih dekat dengan gaya-C ...Pilihan lainnya adalah memasukkan baris yang tidak diinginkan dalam blok IF yang tidak pernah benar
Tentu saja tidak ada dalam blok if yang akan dieksekusi, tetapi akan diurai. Jadi Anda tidak dapat memiliki sintaks yang tidak valid di dalamnya. Juga, komentar tidak boleh berisi
)
kecuali jika di-escape atau dikutip. Oleh karena itu, solusi GOTO yang diterima lebih dapat diandalkan. (Solusi GOTO mungkin juga lebih cepat)Perbarui 2017-09-19
Berikut adalah peningkatan kosmetik untuk solusi GOTO pdub . Saya mendefinisikan variabel lingkungan sederhana "makro" yang membuat sintaks komentar GOTO mendokumentasikan sendiri sedikit lebih baik. Meskipun secara umum disarankan bahwa: label itu unik dalam skrip batch, tidak masalah untuk menyematkan banyak komentar seperti ini dalam skrip batch yang sama.
Atau Anda dapat menggunakan salah satu varian solusi npocmaka ini . Penggunaan REM sebagai ganti BREAK membuat maksudnya sedikit lebih jelas.
sumber
Hanya ingin menyebutkan bahwa solusi GOTO pdub tidak sepenuhnya benar dalam kasus: label komentar muncul berkali-kali. Saya memodifikasi kode dari pertanyaan ini sebagai contoh.
Outputnya adalah
Perintah ECHO DI SINI DI TD_NEXT DI BLOK PERTAMA dilewati.
sumber
@beb
Dan setelah menggunakan ini, stderr tampaknya tidak dapat diakses
Tidak, coba ini:
Tapi mengapa ini berhasil?
maaf, saya menjawab pertanyaan di frensh:
(la redirection par 3> est spécial car elle persiste, di va l'utiliser pour capturer le flux des erreurs 2> est di va le transformer en un flux persistant à l'ade de 3> ceci va nous permettre d'avoir une gestion des erreur pour tout notre environment de script..par la suite si pada veux recuperer le flux 'stderr' il faut faire une autre redirection du handle 2> au handle 1> qui n'est autre que la console ..)
sumber
coba ini:
sumber