मुझे समझाने का क्या मतलब है।
मैं cmd.exe कंसोल के अंदर cmder.exe ( थ्रूinit.bat
) चलाता हूं । संलग्न GIF देखें। इस उद्देश्य के लिए मैंने cmr.bat
नीचे दिखाया गया एक छोटा बैच स्क्रिप्ट लिखा । यह काम करता है जैसा कि इसका मतलब था।
@echo off
%comspec% /k "C:\cmder\vendor\init.bat %*"
EXIT /B %ERRORLEVEL%
लेकिन, यह दृष्टिकोण सीधे उन्नत मोडinit.bat
में चलाने की क्षमता प्रदान नहीं करता है ।
दिए गए समाधान से प्रेरित होने के कारण , मैंने एक और बैच फ़ाइल बनाई, amr.bat
ताकि आंतरिक init.bat
को उन्नत मोड में चलाया जा सके ।
यहाँ की सामग्री है amr.bat
:: Automatically check & get admin rights V2
@echo off
:: BatchGotAdmin
::-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"="
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
::::::::::::::::::::::::::::::
:: START OF USER CUSTOM CODE
::::::::::::::::::::::::::::::
%comspec% /k "C:\cmder\vendor\init.bat %*" rem THIS IS MY CODE
EXIT /B %ERRORLEVEL%
amr.bat
चलती है init.bat
में ऊंचा मोड , लेकिन नहीं रखता (बनाए रखने) कार्यशील निर्देशिका जिसमें से यह कहा जाता रहा है । नीचे दिए गए जीआईएफ स्क्रैंकास्ट इस व्यवहार को प्रदर्शित करते हैं।
init.bat
कार्यशील निर्देशिका जिसमें से यह लागू किया गया था प्राप्त नहीं किया था । इसके बजाय init.bat
के साथ शुरू किया गया था कार्यशील निर्देशिका के स्थान के लिए सेटamr.bat
(जो में रहता C:\BatScripts
निर्देशिका)।
तो मेरे सवाल है, मैं कैसे संशोधित कर सकते हैंamr.bat
स्क्रिप्ट, आदेश रखने के लिए (बनाए रखने) वर्तमान निर्देशिका जिसमें से यह लागू किया गया था में ?
कोई विचार?