batch-file
बैच और JSCript संकर
खोज…
परिचय
JScript
वास्तव में Javascript
का सुपरसेट है (यह 1.8.1 संस्करण है - इसलिए कुछ नए फीचर्स उपलब्ध नहीं हैं), और उन्हें batch
स्क्रिप्ट के कार्यों के विस्तार के लिए batch
स्क्रिप्ट में एम्बेड किया जा सकता है। आमतौर पर, एम्बेडिंग की तकनीक बैच और JScript कोड को अलग करने के लिए JScript निर्देशों (आधिकारिक जावास्क्रिप्ट मानक का हिस्सा नहीं) का उपयोग कर रहे हैं। JScript आपको Com / ActiveX ऑब्जेक्ट्स के साथ-साथ WMI ऑब्जेक्ट्स के साथ मानक जावास्क्रिप्ट के साथ काम करने की अनुमति देता है।
एक बैच फ़ाइल में एंबेडेड JScript
यह निम्नलिखित उदाहरण उपयोगकर्ता माइकल डिलन द्वारा इस उत्तर से बनाया गया है।
निम्नलिखित स्क्रिप्ट पर विचार करें:
@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
//JScript aka Javascript here
यह स्क्रिप्ट स्निपेट करता है:
उस
cscript
कमांड को निष्पादितcscript
जो स्वयं प्रदान की गई सभी दलीलों के साथ कहता है।@set @junk=1
बाद के भाग के रूप में टिप्पणी की गई है (/*
और*/
वैध JScript टिप्पणी),JScript उनकी अनदेखी करेगा।
नोट: हमें
@set @junk=1
भाग की आवश्यकता है क्योंकि बैच फ़ाइल कमांड के रूप में पहचान नहीं है/*
, लेकिन एकset
स्टेटमेंट एक वर्कअराउंड होगा। JScript एक टिप्पणी के रूप में/*
पहचान करेगा इसलिए अन्यbatch
फ़ाइल JScript इंजन द्वारा निष्पादित नहीं की जाएगी।
आप अपने JScript को */
बाद जोड़ सकते हैं और अपनी बैच फाइल स्क्रिप्टिंग को शुरू कर सकते हैं!
अस्थायी फ़ाइलों के साथ JScript चलाएँ
जैसा कि यहां बताया गया है , एक अन्य स्क्रिप्ट को चलाने के लिए पुरानी स्कूल पद्धति अस्थायी फ़ाइलों का उपयोग करके है। सरल इसे एक फ़ाइल में echo
है और फिर इसे चलाता है (और इसे वैकल्पिक रूप से हटा दें)।
यहाँ मूल अवधारणा है:
@echo off
echo //A JS Comment > TempJS.js
echo //Add your code>>TempJS.js
cscript //nologo //e:cscript.exe TempJS.js
del /f /s /q TempJS.js
लेकिन इसके लिए अपेक्षाकृत बड़े JScript बनाने के लिए बहुत सारे echo
स्टेटमेंट्स की आवश्यकता होगी। यहाँ Aacini द्वारा एक बेहतर विधि है।
@echo off
setlocal
rem Get the number of the "<resource>" line
for /F "delims=:" %%a in ('findstr /N "<resource>" "%~F0"') do set "start=%%a"
rem Skip such number of lines and show the rest of this file
(for /F "usebackq skip=%start% delims=" %%a in ("%~F0") do echo %%a) > TempJS.js
cscript //nologo //e:cscript.txt TempJS.js
del /f /s /q TempJS.js
goto :EOF
<resource>
JScript
JScript
JScript