下面是一個簡單的示例,其中包含兩個bat文件,分別爲caller.bat和callee.bat。如何在Windows 7中以管理員身份運行時從另一個.bat文件調用.bat文件
caller.bat
call callee.bat
pause
callee.bat
echo "All good"
當我通過運行caller.bat雙擊它在資源管理器中它工作正常,但如果用右鍵單擊「以管理員身份運行「我得到
‘callee.bat’不被識別爲一個內部或外部命令
下面是一個簡單的示例,其中包含兩個bat文件,分別爲caller.bat和callee.bat。如何在Windows 7中以管理員身份運行時從另一個.bat文件調用.bat文件
caller.bat
call callee.bat
pause
callee.bat
echo "All good"
當我通過運行caller.bat雙擊它在資源管理器中它工作正常,但如果用右鍵單擊「以管理員身份運行「我得到
‘callee.bat’不被識別爲一個內部或外部命令
問題是,當以管理員身份運行時,當前工作目錄更改爲C:\ Windows \ System32。我的解決方案是明確地將caller.bat中的當前工作目錄更改爲與運行該文件的目錄相同。這是通過提取從%0參數驅動器和路徑如下所示進行:
cd /D %~dp0
call callee.bat
pause
的/ d參數CD引起的目錄以及改變路徑並需要處理的情況下調用者.bat文件不在C:驅動器上。
另一種解決方案是增加了您的腳本保存到您的路徑系統環境變量的目錄。您可以通過Windows提供的高級系統設置(在開始菜單中鍵入環境變量,您應該看到該選項),或者可以以管理員身份運行cmd會話並輸入: setx path%path%; 「您的腳本目錄」/ M
/M使系統範圍擴大,而不僅僅是您的用戶(這是需要管理員)。只有在路徑中有空格時才需要雙引號。路徑變量包含由分號分隔的路徑列表。以上只是將新條目附加到現有列表中。向列表中添加一個條目允許您在不指定路徑的情況下從該目錄執行程序。
最後,如果這並不在它自己的工作,你可能還需要添加.CMD和/或.bat您PATHEXT變量: SETX PATHEXT%PATHEXT%;. CMD; .BAT/M
要檢查變量的當前值,請設置var_name ie: set pathext
同意或直接使用'call%〜dp0callee.bat'來避免留下管理工作目錄。 _(我的意思是目錄,而不是特權)_。 – gmo
好想法gmo - 儘管在我的情況下,我希望它的工作方式與雙擊運行它一樣,這意味着它必須在同一個目錄中運行。 –