天天看點

bat腳本以管理者身份運作時,目錄沒有定位到目前目錄問題的解決方法

我們時常使用bat腳本去處理一些事情,有事bat中的指令需要以管理者的身份運作,但是運作後檔案的目錄自動定位到了C:\Windows\system32下,而不再腳本所在的目錄下。

bat腳本以管理者身份運作時,目錄沒有定位到目前目錄問題的解決方法

這是我的檔案目錄,WindosActive.bat腳本會讀取WindosSerial.ini中的檔案資訊,但是腳本中的有些指令要以管理者的身份才可以正常運作。如果直接右鍵管理者運作的目錄會定位到C:\Windows\system32。然後提示WindosSerial.ini檔案不存在。

我們用echo %cd% 輸出目前目錄:

bat腳本以管理者身份運作時,目錄沒有定位到目前目錄問題的解決方法

那麼有沒有其他方法呢?

使用變量擴充 的方法,讀取出目前檔案的目錄,然後cd過去:

@echo off 
if not "%OS%"=="Windows_NT" exit
title WindosActive

echo 目前目錄:%cd%
echo 變量擴充: %~dp0
cd /D %~dp0
echo 更改後的目錄:%cd%
pause      
bat腳本以管理者身份運作時,目錄沒有定位到目前目錄問題的解決方法

有關其他變量擴充的知識:

@echo off 
if not "%OS%"=="Windows_NT" exit
title WindosActive

echo.
echo 将 ^%%I 擴充到一個完全合格的路徑名
echo %~f0
echo.
echo 僅将 ^%%I 擴充到一個驅動器号 
echo %~d0
echo.
echo 僅将 ^%%I 擴充到一個路徑 
echo %~p0
echo.
echo 僅将 ^%%I 擴充到一個驅動器和路徑 
echo %~dp0
echo.
echo 僅将 ^%%I 擴充到一個檔案名 
echo %~n0
echo.
echo 僅将 ^%%I 擴充到一個檔案擴充名 
echo %~x0
echo.
echo 擴充的路徑隻含有短名 
echo %~s0
echo.
echo 将 ^%%I 擴充到檔案的檔案屬性 
echo %~a0
echo.
echo 将 ^%%I 擴充到檔案的日期/時間 
echo %~t0
echo.
echo 将 ^%%I 擴充到檔案的大小 
echo %~z0
echo.
echo 查找列在路徑環境變量的目錄,并将 ^%%I 擴充到找到的第一個完全合格的名稱。如果環境變量名 未被定義,或者沒有找到檔案,此組合鍵會擴充到 空字元串 
echo %~$PATH:0
echo.
echo 組合擴充:
echo 驅動器+路徑+檔案名 +檔案擴充名 +檔案屬性 +日期/時間 +檔案的大小 
echo %~dpnxatz0
echo.
echo 驅動器+路徑+檔案名 +檔案擴充名 +檔案屬性 +日期/時間 +檔案的大小+ 短名 
echo %~dpnxatzs0
echo.

pause      
bat腳本以管理者身份運作時,目錄沒有定位到目前目錄問題的解決方法

其中的變量擴充可以随意組合。

如果是此文是轉載文章,本人會附上轉載連結,此篇文章的版權歸原創作者所屬,如果侵權請與我聯系,我會删除此文。

若沒有标明轉載連結,此篇文章屬于本人的原創文章,其版權所屬:

作者:feiquan

出處:http://www.cnblogs.com/feiquan/

版權聲明:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

大家寫文都不容易,請尊重勞動成果~ 這裡謝謝大家啦(*/ω\*)