2018年10月25日 星期四

【DOS】如何得知BAT檔目錄位置當以系統管理員開啟時


這幾天再嘗試寫DOS的批次檔,因為要將此目錄的檔案移至Program File,
需要以系統管理員開啟,結果不管呼叫的是%CD%還是pwd,都顯示目前位置在C:\Windows\system32,這樣要copy檔案時還要回來找原本目錄的位置。

test.bat
pwd
echo %CD%
pause


一般使用者開啟
C:\Users\vincent\Desktop>pwd
C:\Users\vincent\Desktop

C:\Users\vincent\Desktop>echo C:\Users\vincent\Desktop
C:\Users\vincent\Desktop

C:\Users\vincent\Desktop>pause
請按任意鍵繼續 . . .

系統管理員開啟
C:\Windows\system32>pwd
C:\Windows\system32

C:\Windows\system32>echo C:\Windows\system32
C:\Windows\system32

C:\Windows\system32>pause
請按任意鍵繼續 . . .


解決


test2.bat
SET LOCAL_PATH="%~dp0"

echo %LOCAL_PATH%

一般使用者開啟
C:\Users\vincent\Desktop>SET LOCAL_PATH="C:\Users\vincent\Desktop\"

C:\Users\vincent\Desktop>echo "C:\Users\vincent\Desktop\"
"C:\Users\vincent\Desktop\"

C:\Users\vincent\Desktop>pause
請按任意鍵繼續 . . .

系統管理員開啟
C:\Windows\system32>SET LOCAL_PATH="C:\Users\vincent\Desktop\"

C:\Windows\system32>echo "C:\Users\vincent\Desktop\"
"C:\Users\vincent\Desktop\"

C:\Windows\system32>pause
請按任意鍵繼續 . . .

參考資料

沒有留言:

張貼留言