break||(
code that cannot contain non paired closing bracket
)
İken goto
çözüm iyi bir seçenektir o iş olmaz parantez içinde (komutlar İÇİN ve IF dahil) .Ama bu irade. Yine de, ayrıştırılacakları için köşeli parantezleri ve geçersiz sözdizimi FOR
ve IF
komutları konusunda dikkatli olmalısınız .
Güncelleme
Dbenham'ın cevabındaki güncelleme bana bazı fikirler verdi. Birincisi - çok satırlı yorumlara ihtiyaç duyabileceğimiz iki farklı durum vardır - GOTO'nun kullanılamadığı bir parantez bağlamında ve dışında. Executed.Though kod Thede hala işlenecek ve bazı sözdizimi hataları (algılanır olmasını kodu engelleyen bir durum var eğer iç parantez bağlam başka parantez kullanabilirsiniz FOR
, IF
, yanlış kapalı parantez, yanlış parametre genişletme ..). So Mümkünse, GOTO kullanmak daha iyidir.
Etiket olarak kullanılan bir makro / değişken oluşturmak mümkün olmasa da, parantezin yorumları için makroları kullanmak mümkündür. Yine de iki numara GOTO yorumlarını daha simetrik ve daha hoş hale getirmek için kullanılabilir (en azından benim için). Bunun için iki numara kullanacağım - 1) Bir etiketin önüne tek bir sembol koyabilirsiniz ve goto onu yine de bulabilir (bunun neden olduğu hakkında hiçbir fikrim yok, sanırım bir sürücü arıyor). 2):
değişken adının sonuna bir single koyabilirsiniz ve değiştirme / çıkarma özelliği tetiklenmeyecektir (etkin uzantılar altında bile). Parantez açıklamaları için makrolarla birleştirildiğinde, her iki durumun neredeyse aynı görünmesini sağlayabilir.
İşte örnekler (en sevdiğim sırayla):
İle dikdörtgen parantez :
@echo off
::GOTO comment macro
set "[:=goto :]%%"
::brackets comment macros
set "[=rem/||(" & set "]=)"
::testing
echo not commented 1
%[:%
multi
line
comment outside of brackets
%:]%
echo not commented 2
%[:%
second multi
line
comment outside of brackets
%:]%
::GOTO macro cannot be used inside for
for %%a in (first second) do (
echo first not commented line of the %%a execution
%[%
multi line
comment
%]%
echo second not commented line of the %%a execution
)
İle süslü parantez :
@echo off
::GOTO comment macro
set "{:=goto :}%%"
::brackets comment macros
set "{=rem/||(" & set "}=)"
::testing
echo not commented 1
%{:%
multi
line
comment outside of brackets
%:}%
echo not commented 2
%{:%
second multi
line
comment outside of brackets
%:}%
::GOTO macro cannot be used inside for loop
for %%a in (first second) do (
echo first not commented line of the %%a execution
%{%
multi line
comment
%}%
echo second not commented line of the %%a execution
)
İle parantez :
@echo off
::GOTO comment macro
set "(:=goto :)%%"
::brackets comment macros
set "(=rem/||(" & set ")=)"
::testing
echo not commented 1
%(:%
multi
line
comment outside of brackets
%:)%
echo not commented 2
%(:%
second multi
line
comment outside of brackets
%:)%
::GOTO macro cannot be used inside for loop
for %%a in (first second) do (
echo first not commented line of the %%a execution
%(%
multi line
comment
%)%
echo second not commented line of the %%a execution
)
Powershell ve C stilleri arasındaki karışım ( <
yeniden yönlendirme daha yüksek *
öncelikli olduğu için kullanılamaz . Bu nedenle kullanılamaz %*
):
@echo off
::GOTO comment macro
set "/#:=goto :#/%%"
::brackets comment macros
set "/#=rem/||(" & set "#/=)"
::testing
echo not commented 1
%/#:%
multi
line
comment outside of brackets
%:#/%
echo not commented 2
%/#:%
second multi
line
comment outside of brackets
%:#/%
::GOTO macro cannot be used inside for loop
for %%a in (first second) do (
echo first not commented line of the %%a execution
%/#%
multi line
comment
%#/%
echo second not commented line of the %%a execution
)
To emphase o bir yorumun (o kadar kısa değil düşünce):
@echo off
::GOTO comment macro
set "REM{:=goto :}REM%%"
::brackets comment macros
set "REM{=rem/||(" & set "}REM=)"
::testing
echo not commented 1
%REM{:%
multi
line
comment outside of brackets
%:}REM%
echo not commented 2
%REM{:%
second multi
line
comment outside of brackets
%:}REM%
::GOTO macro cannot be used inside for
for %%a in (first second) do (
echo first not commented line of the %%a execution
%REM{%
multi line
comment
%}REM%
echo second not commented line of the %%a execution
)