·
讓bat文件自動以管理員身份運行
如何讓bat文件自動以管理員身份運行,將這段寫在bat文件的前頭即可 :
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"
代碼預覽:
:: 讓bat文件自動以管理員身份運行 (下面這一段)
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0"
調整后的完整代碼:
(注意:在 :: 完成獲取,下面可以開始寫你自己的代碼了 之后都是注釋說明,可以刪除掉。)
@echo off title 運行bat批處理腳本時先提示獲取管理員權限 mode con cols=100 lines=20 color 3f :: 開始獲取管理員權限 setlocal set uac=~uac_permission_tmp_%random% md "%SystemRoot%\system32\%uac%" 2>nul if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else ( echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs" echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs" echo WScript.Quit >>"%temp%\%uac%.vbs" "%temp%\%uac%.vbs" /f del /f /q "%temp%\%uac%.vbs" & exit ) endlocal :: 完成獲取,下面可以開始寫你自己的代碼了 echo. echo 原理:先嘗試在系統目錄下臨時新建一個文件夾,若已獲取管理員權限或是運行在XP等不需要管理員權限的 echo 老系統時,是可以新建成功的,此時只需刪除這個臨時新建的文件夾就好了,否則通過創建一個臨時 echo vbs腳本獲取管理員權限,然后再刪除這個臨時vbs腳本文件。 echo. echo 提示:當獲取管理員目錄后,你的批處理運行目錄會發生變化,為保證目錄准確, echo 可通過 cd 切換目錄,例“cd /d %%~dp0”切換回批處理所在目錄 echo. echo 當前運行目錄: %cd%\ echo 批處理所在目錄:%~dp0 echo. echo 例:切換回批處理所在目錄 echo cd /d %%~dp0 echo. cd /d %~dp0 echo 當前運行目錄: %cd%\ echo 批處理所在目錄:%~dp0 pause exit
————————————
附:bat cmd 注釋方法
寫bat批處理也一樣,都要用到注釋的功能,這是為了程式的可讀性
在批處理中,段注釋有一種比較常用的方法:
goto start
= 可以是多行文本,可以是命令
= 可以包含重定向符號和其他特殊字符
= 只要不包含 :start 這一行,就都是注釋
:start
另外,還有其他各種注釋形式,比如:
1、:: 注釋內容(第一個冒號后也可以跟任何一個非字母數字的字符)
2、rem 注釋內容(不能出現重定向符號和管道符號)
3、echo 注釋內容(不能出現重定向符號和管道符號)〉nul
4、if not exist nul 注釋內容(不能出現重定向符號和管道符號)
5、:注釋內容(注釋文本不能與已有標簽重名)
6、%注釋內容%(可以用作行間注釋,不能出現重定向符號和管道符號)
7、goto 標簽 注釋內容(可以用作說明goto的條件和執行內容)
8、:標簽 注釋內容(可以用作標簽下方段的執行內容)
·