विंडोज पर कुछ बैच फ़ाइलों को कई पंक्तियों, जैसा कि नीचे के साथ एक अगर सिंटैक्स का उपयोग करें:बैच फ़ाइलें, विस्टा x64, अगर और कोष्ठक
if var==rule (
some comands
) else (
else commands
)
अब, विंडोज विस्टा x64 "सी के तहत सभी 32 बिट फ़ाइलों का निर्णय लिया : \ प्रोग्राम फ़ाइलें (x86) "। दुर्भाग्यवश, जब भी आप बिना किसी उद्धरण के एक बहु रेखा के अंदर एक पर्यावरण चर (जैसे पीएटीएच) का उपयोग करते हैं, तो वैरिएबल के मूल्य के अंदर कोष्ठक आईएफ को भ्रमित करता है, बैच फ़ाइल को निरस्त करता है। उदाहरण के लिए:
if "%OS%"=="Windows_NT" (
@setlocal
call :set_home
set _ARGS=%*
) else (
set _SCALA_HOME=%SCALA_HOME%
rem The following line tests SCALA_HOME instead of _SCALA_HOME, because
rem the above change to _SCALA_HOME is not visible within this block.
if "%SCALA_HOME%"=="" goto error1
call :set_args
)
इस के साथ एक बैच फ़ाइल असफल हो जायेगी भी लाइन जहां% SCALA_HOME% प्रकट होता है निष्पादित हो नहीं करता, हालांकि। यह बल्कि कष्टप्रद है। क्या इसका कोई समाधान है?
यदि विस्तारित विस्तार वास्तव में इस समस्या को हल करता है, तो आपको दूसरी बैच स्क्रिप्ट की आवश्यकता नहीं होगी, बस अपनी स्क्रिप्ट के शीर्ष पर 'setlocal enableextensions enableelayedexpansion' डालें। –
मुझे नहीं पता था, धन्यवाद पैट्रिक! बहुत अच्छे। –
मैं setlocal enableextensions enableelayedexpasion का उपयोग करने का प्रयास करूंगा। अगर यह काम करता है, तो मुझे स्वीकार किए जाने के लिए सेट करने के लिए एक और जवाब की आवश्यकता होगी। –