break||(
code that cannot contain non paired closing bracket
)
जबकि goto
समाधान एक अच्छा विकल्प है, यह कोष्ठक (फॉर और आईएफ कमांड सहित) के भीतर काम नहीं करेगा। लेकिन यह होगा। यद्यपि आपको कोष्ठक और अमान्य सिंटैक्स को बंद करने FOR
और IF
आदेशों के बारे में सावधान रहना चाहिए क्योंकि उन्हें पार्स किया जाएगा।
अपडेट करें
डेंभम के जवाब में अपडेट ने मुझे कुछ विचार दिए। पहला - दो अलग-अलग मामले हैं जहां हमें मल्टी लाइन टिप्पणियों की आवश्यकता हो सकती है - एक ब्रैकेट के संदर्भ में जहां GOTO का उपयोग नहीं किया जा सकता है और इसके बाहर। ब्रैकेट्स के संदर्भ में हम एक और कोष्ठक का उपयोग कर सकते हैं यदि कोई ऐसी स्थिति है जो कोड को निष्पादित करने से रोकती है। तब भी कोड थ्रेड को पार्स किया जाएगा और कुछ सिंटैक्स त्रुटियों का पता लगाया जाएगा ( FOR
और IF
, अनुचित रूप से बंद ब्रैकेट, गलत पैरामीटर विस्तार ..)। यदि यह संभव है तो GOTO का उपयोग करना बेहतर होगा।
यद्यपि यह एक लेबल के रूप में उपयोग किए जाने वाले मैक्रो / वैरिएबल को बनाना संभव नहीं है - लेकिन ब्रैकेट की टिप्पणियों के लिए मैक्रोज़ का उपयोग करना संभव है। दो ट्रिक का उपयोग किया जा सकता है गोटो टिप्पणियों को अधिक सममित और अधिक मनभावन (कम से कम मेरे लिए) बना सकते हैं। इसके लिए मैं दो तरकीबों का उपयोग करूंगा - 1) आप एक लेबल के सामने एक एकल चिह्न रख सकते हैं और गोटो अभी भी इसे ढूंढने में सक्षम होगा (मुझे नहीं पता कि यह क्यों है। मेरे लिए यह एक ड्राइव की खोज है)। 2) आप :
एक वैरिएबल नाम के अंत में एक सिंगल रख सकते हैं और एक रिप्लेसमेंट / सबट्रिंग फीचर को ट्रिगर नहीं किया जाएगा (यहां तक कि सक्षम किए गए अंडर में भी)। कोष्ठक टिप्पणियों के लिए मैक्रों के साथ संयुक्त विच दोनों मामलों को लगभग समान देख सकता है।
यहाँ उदाहरण हैं (क्रम में मैं उन्हें सबसे अधिक पसंद करता हूँ):
आयताकार कोष्ठक के साथ :
@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
)
घुंघराले कोष्ठक के साथ :
@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
)
कोष्ठक के साथ :
@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
)
शक्तियां और सी शैलियों के बीच मिश्रण ( <
इसका उपयोग नहीं किया जा सकता क्योंकि पुनर्निर्देशन उच्चतर पुजारियों के साथ है। *
इसका उपयोग नहीं किया जा सकता है %*
):
@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
)
करने के लिए emphase कि एक टिप्पणी है (सोचा था कि यह इतना कम नहीं है):
@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
)