假設目前有兩個bat檔
B1.bat
Echo test1
Start b2.bat
Pause
B2.bat
Echo test2
Exit
測試結果
1.直接執行b1 可以正常呼叫b2
2.以右鍵選系統管理員身份執行,就會出現警告視窗:「windows找不到’b2.bat’。請確定你輸入正確的名稱,並重試。」
所以如果要執行時都要用不同的身份執行;key帳號密碼,即便是登入帳號是管理者帳號。
非常不方便,請問有解法嗎??而且有點好奇為何會這樣,有人知道原理嗎?
試過加雙引號”2.bat”
就可以用系統管理員身份執行找到該檔案,但結果是只開一個新的cmd,什麼都沒執行。
BAT批次指令: START 的功能介紹
START : 開啟另一個視窗來執行指定的程式或命令。
指令詳解:
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program]
[parameters]
"title" 顯示在視窗標題列上的文字
path 起始目錄
B 啟動應用程式但不建立新視窗。含有 ^C 控制碼的應用程式會被略過,除非應用程式啟用 ^C 程序,否則 ^Break 是唯一可以中斷應用程式的方法
I 新環境會使用 cmd.exe 的原始環境,而不是目前的環境。
MIN 視窗最小化
MAX 視窗最大化
SEPARATE 用不同的記憶體空間啟動 16 位元視窗程式
SHARED 用共用的記憶體空間啟動 16 位元視窗程式
LOW 在 IDLE 主要類別中啟動應用程式
NORMAL 在 NORMAL 主要類別中啟動應用程式
HIGH 在 HIGH 主要類別中啟動應用程式
REALTIME 在 REALTIME 主要類別中啟動應用程式
ABOVENORMAL 在 ABOVENORMAL 主要類別中啟動應用程式
BELOWNORMAL 在 BELOWNORMAL 主要類別中啟動應用程式
WAIT 啟動應用程式並等待其結束
command/program
如果這是內部 cmd 命令或批次檔的話,命令處理器會用 /K 參數執行 cmd.exe。這表示視窗會保持到命令執行完成。
如果這不是內部 cmd 命令或批次檔的話,它就是一個程式,它會以視窗程式或主控台 (DOS) 應用程式的執行方式執行。
parameters 這些是傳給 command/program 的參數。
START的命令會另開一個cmd來運行。加雙引號會被變成是標題而不是程式。
至於你用系統管理身份開啟會出現找不到。
有可能是因為運行的目錄會被切換到系統管理員。
一般大多數建議在你的bat上先做路徑的切換。就可以免掉這些問題
如
Echo test1
c:
cd /test/bat
Start b2.bat
Pause