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


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

這是我的文件目錄,WindosActive.bat腳本會讀取WindosSerial.ini中的文件信息,但是腳本中的有些命令要以管理員的身份才可以正常運行。如果直接右鍵管理員運行的目錄會定位到C:\Windows\system32。然后提示WindosSerial.ini文件不存在。

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

那么有沒有其他方法呢?

使用變量擴充 的方法,讀取出當前文件的目錄,然后cd過去:

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

echo 當前目錄:%cd%
echo 變量擴充: %~dp0
cd /D %~dp0
echo 更改后的目錄:%cd%
pause

 

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

@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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM