2015-06-08 169 views
0

我想要的东西以管理员身份运行一个批处理文件,现在我发现:运行批处理作为管理员

:: ### START UAC SCRIPT ### 

if "%2"=="firstrun" exit 
cmd /c "%0" null firstrun 

if "%1"=="skipuac" goto skipuacstart 

:checkPrivileges 
NET FILE 1>NUL 2>NUL 
if '%errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges) 

setlocal DisableDelayedExpansion 
set "batchPath=%~0" 
setlocal EnableDelayedExpansion 
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 

setlocal & pushd . 

cd /d %~dp0 
cmd /c "%0" skipuac firstrun 
cd /d %~dp0 

:skipuacstart 

if "%2"=="firstrun" exit 

:: ### END UAC SCRIPT ### 

:: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ### 

的问题是,我得到了很多在命令提示符中的错误,这就是我得到:

C:\用户\马克\桌面>如果 “firstrun” == “firstrun” 退出

C:\用户\马克\桌面>如果 “” == “skipuac” 转到skipuacstart

C:\用户\马克\桌面> NET FILE 1> NUL 2> NUL

C:\用户\马克\桌面>如果 '2' == '0'(转到gotPrivileges)否则(转到 getPrivil EGES )

C:\用户\马克\桌面>如果 '' == 'ELEV'(换档&转到gotPrivileges)

C:\用户\马克\桌面> SETLOCAL DisableDelayedExpansion

C:\ Users \ Mark \ Desktop> set “batchPath = C:\ Users \ Mark \ Desktop \ Testing.bat”

C:\用户\马克\桌面> SETLOCAL EnableDelayedExpansion

C:\用户\马克\桌面>回波装置UAC =的CreateObject( “Shell.Application”) 1>“C:\我们ERS \马克\ AppData \ Local \ Temp \ OEgetPrivileges.vbs“

C:\ Users \ Mark \ Desktop> ECHO UAC.ShellExecute”!batchPath!“,”ELEV“,”“, ”runas“,11 >>” C:\用户\马克\应用程序数据\本地的\ Temp \ OEgetPrivileges.vbs”

C:\用户\马克\桌面> “C:\用户\马克\应用程序数据\本地的\ Temp \ OEgetPrivileges.vbs”

有没有办法解决这个问题,只是检查管理权限,并要求它没有?

+3

是的,在脚本的顶部粘贴'@echo off'。 – rojo

+1

这些都不是错误。这些是你正在运行的命令。 –

+0

对于我使用批处理来说,这是非常新的,所以我不知道,谢谢@rojo的建议。 – Korkel

回答

0

将@echo放在第一行是解决方案。

@echo off 
:: ### START UAC SCRIPT ### 

if "%2"=="firstrun" exit 
cmd /c "%0" null firstrun 

if "%1"=="skipuac" goto skipuacstart 

:checkPrivileges 
NET FILE 1>NUL 2>NUL 
if '%errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges) 

setlocal DisableDelayedExpansion 
set "batchPath=%~0" 
setlocal EnableDelayedExpansion 
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 

setlocal & pushd . 

cd /d %~dp0 
cmd /c "%0" skipuac firstrun 
cd /d %~dp0 

:skipuacstart 

if "%2"=="firstrun" exit 

:: ### END UAC SCRIPT ### 

:: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ### 
相关问题