batch file - लंबे समय तक कमांड विंडोज विस्टा बैच(.bat) फ़ाइल में एकाधिक लाइनों पर विभाजित होते हैं




batch-file cmd (4)

मैं Windows (Vista) बैच फ़ाइल में एकाधिक लाइनों पर लंबे आदेशों को कैसे चला सकता हूं?


एकाधिक आदेश कोष्ठक में रखा जा सकता है और कई लाइनों पर फैल सकता है; तो echo hi && echo hello जैसे कुछ इस तरह रखा जा सकता है:

( echo hi
  echo hello )

इसके अलावा चर मदद कर सकते हैं:

set AFILEPATH="C:\SOME\LONG\PATH\TO\A\FILE"
if exist %AFILEPATH% (
  start "" /b %AFILEPATH% -option C:\PATH\TO\SETTING...
) else (
...

इसके अलावा मैंने कैरेट्स ( ^ ) के साथ देखा कि if सशर्त उन्हें केवल तभी पालन करने के लिए पसंद करते हैं जब कोई स्थान मौजूद था:

if exist ^

ऐसा लगता है कि लूप के मानों के बीच में विभाजित करने के लिए एक कैरेट की आवश्यकता नहीं होती है (और वास्तव में एक का उपयोग करने की कोशिश एक वाक्यविन्यास त्रुटि माना जाएगा)। उदाहरण के लिए,

for %n in (hello
bye) do echo %n

ध्यान दें कि हैलो या पहले अलविदा के बाद भी कोई जगह की आवश्यकता नहीं है।


(यह मूल रूप से वेन के जवाब का एक पुनर्लेख है लेकिन कैरेट के चारों ओर भ्रम के साथ इसे साफ़ कर दिया गया है। इसलिए मैंने इसे सीडब्ल्यू के रूप में पोस्ट किया है। मैं जवाब संपादित करने के बारे में शर्मिंदा नहीं हूं, लेकिन पूरी तरह से उन्हें फिर से लिखना अनुचित लगता है।)

आप कैरेट ( ^ ) के साथ लंबी लाइनों को तोड़ सकते हैं, बस याद रखें कि इसके बाद की देखभाल और नई लाइन पूरी तरह से कमांड से हटा दी जाती है , इसलिए यदि आप इसे स्थान देते हैं जहां एक जगह की आवश्यकता होगी (जैसे पैरामीटर के बीच), हो अंतरिक्ष को भी शामिल करना सुनिश्चित करें (या तो ^ से पहले, या अगली पंक्ति की शुरुआत में - बाद की पसंद यह स्पष्ट करने में मदद कर सकती है कि यह एक निरंतरता है)।

उदाहरण: (सभी विंडोज एक्सपी और विंडोज 7 पर परीक्षण किया गया)

xcopy file1.txt file2.txt

के रूप में लिखा जा सकता है:

xcopy^
 file1.txt^
 file2.txt

या

xcopy ^
file1.txt ^
file2.txt

या और भी

xc^
opy ^
file1.txt ^
file2.txt

(वह आखिरी काम करता है क्योंकि xc और ^ कोई रिक्त स्थान नहीं है, और अगली पंक्ति की शुरुआत में कोई रिक्त स्थान नहीं है। इसलिए जब आप ^ और नई लाइन को हटाते हैं, तो आपको ... xcopy मिलता है।)

पठनीयता और स्वच्छता के लिए, यह केवल पैरामीटर के बीच सबसे अच्छा तोड़ रहा है (अंतरिक्ष को शामिल करना सुनिश्चित करें)।

सुनिश्चित करें कि ^ बैच फ़ाइल में आखिरी बात नहीं है, क्योंकि इसके साथ एक बड़ा मुद्दा प्रतीत होता है


आप देखभाल के साथ लंबी लाइनों को तोड़ सकते हैं ^ जब तक आप याद रखें कि इसके बाद की देखभाल और नई लाइन पूरी तरह से हटा दी गई है। इसलिए, यदि वहां एक जगह होनी चाहिए जहां आप लाइन तोड़ रहे हैं, तो एक जगह शामिल करें। ( नीचे उस पर अधिक। )

उदाहरण:

copy file1.txt file2.txt

के रूप में लिखा जाएगा:

copy file1.txt^
 file2.txt







cmd