इस प्रश्न को इस धागे के उत्तर के रूप में प्रस्तुत किया गया था जहां UAC उन्नयन कोड केFOR
साथ बैच में लूप्स चलने से गैर-मौजूद निर्देशिकाओं में शामिल त्रुटियां उत्पन्न होती हैं।
इसका स्क्रीनशॉट इस प्रकार है:
समस्या गलत Local
और बार-बार Application Data
फ़ोल्डर नामों के सम्मिलन की है । UAC ऊँचाई कोड का उपयोग नहीं करते समय ये त्रुटि संदेश प्रकट नहीं होते हैं।
क्या यह संभव है कि WScript में कुछ करने के लिए गलत वातावरण सेटिंग्स लागू है HOMEPATH
पर WshEnvironment
वस्तु? यह XP के उन्नयन के लिए और अधिक से संबंधित हो सकता है (साल पहले) 7 हिमाचल प्रदेश है, जहां किसी कारण से, के भूत विन Documents and Settings
, Local Settings
और Application Data
दूर नहीं जाना होगा। सीधे शब्दों में जैसे कि आदेश
set LOCALAPPDATA=C:\Users\%username%\AppData\Local
set APPDATA=C:\Users\%username%\AppData\Roaming
कुछ भी नहीं बदलता है। व्यवस्थापक विशेषाधिकार के साथ %LocalAppData%
बैच में सही नहीं लगता है। रजिस्ट्री को खोजना वस्तुतः निक्स को उन चीजों के लिए लाता है, जैसे Application Data
स्रोत का निर्धारण किया जाना बाकी है। शायद शेल ऑब्जेक्ट के कुछ अन्य पहलू?
यहां स्क्रिप्ट + कॉपी% पेस्ट है
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights (thanks to TanisDLJ at Stackoverflow)
:::::::::::::::::::::::::::::::::::::::::
@echo off
color 1E
mode 100,50
VERIFY > nul
CLS
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\icacls.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"
echo args = "" >> "%temp%\getadmin.vbs"
echo For Each strArg in WScript.Arguments >> "%temp%\getadmin.vbs"
echo args = args ^& strArg ^& " " >> "%temp%\getadmin.vbs"
echo Next >> "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", args, "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" %*
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
Setlocal EnableDelayedExpansion & pushd "%CD%" & CD /D "%~dp0"
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights (thanks to TanisDLJ at Stackoverflow)
:::::::::::::::::::::::::::::::::::::::::
@echo off
color 1E
mode 100,50
VERIFY > nul
CLS
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\icacls.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"
echo args = "" >> "%temp%\getadmin.vbs"
echo For Each strArg in WScript.Arguments >> "%temp%\getadmin.vbs"
echo args = args ^& strArg ^& " " >> "%temp%\getadmin.vbs"
echo Next >> "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", args, "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" %*
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
Setlocal EnableDelayedExpansion & pushd "%CD%" & CD /D "%~dp0"
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
Setlocal EnableDelayedExpansion & pushd "%CD%" & CD /D "%~dp0"
set CURRDRIVE=C
FOR /F "usebackq delims==" %%G IN (`dir %CURRDRIVE%:\ /A:D /O:G /S /B ^| FIND /I "myString"`) DO (set "foundMyString=%%~pG")
pause
ध्यान दें कि इस मशीन पर स्पैम UAC कोड नहीं चलने पर प्रदर्शित होता है (सभी "START" से ऊपर) और दोनों मामलों में ठीक काम करता है। एक उन्नत कमांड प्रॉम्प्ट में "%%" के स्थान पर "%" के साथ "START" के नीचे दिए गए कोड को कॉपी करें और अभी भी वही संदेश प्राप्त करें।