2015-06-08 47 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 ### 
相關問題