DOS批處理中%~dp0等擴充變量語法詳解


有時候我們看到別人使用%~dp0

~是擴展的意思,相當於把一個相對路徑轉換絕對路徑
%0代指批處理文件自身
%1表示批處理文件命令行接收到的第一個參數,%2表示第二個,以此類推
%~d0 是指批處理所在的盤符,其中d代表drive
%~p0 是指批處理所在的目錄,其中p代表path
%~dp0 是批處理所在的盤符加路徑


cd %~dp0 就是進入批處理所在目錄了


詳細解釋還可參考命令 call /?

DOS批處理中%~dp0表示什么意思

(注: %0 就是該 batch 文件的文件名)
這句的意思是 
更改當前目錄為批處理本身的目錄 
有些暈吧?不急,我舉例 
比如你有個批處理 a.bat 在 D:/qq 文件夾下 
a.bat 內容為 
cd /d %~dp0 
在這里 
cd /d %~dp0 的意思就是 cd /d d:/qq 
%0 代表批處理本身 d:/qq/a.bat 
~dp 是變量擴充 
d 既是擴充到分區號 d: 
p 就是擴充到路徑 /qq 
dp 就是擴充到分區號路徑 d:/qq

擴充變量語法詳解:
:: 選項語法 : 
:: ~I - 刪除任何引號 (") ,擴充 %I 
:: %~fI - 將 %I 擴充到一個完全合格的路徑名 
:: %~dI - 僅將 %I 擴充到一個驅動器號 
:: %~pI - 僅將 %I 擴充到一個路徑 
:: %~nI - 僅將 %I 擴充到一個文件名 
:: %~xI - 僅將 %I 擴充到一個文件擴展名 
:: %~sI - 擴充的路徑只含有短名 
:: %~aI - 將 %I 擴充到文件的文件屬性 
:: %~tI - 將 %I 擴充到文件的日期 / 時間 
:: %~zI - 將 %I 擴充到文件的大小 
:: %~$PATH:I - 查找列在路徑環境變量的目錄,並將 %I 擴充 
:: 到找到的第一個完全合格的名稱。如果環境變量名 
:: 未被定義,或者沒有找到文件,此組合鍵會擴充到 
:: 空字符串 
:: 可以組合修飾符來得到多重結果 : 
:: %~dpI - 僅將 %I 擴充到一個驅動器號和路徑 
:: %~nxI - 僅將 %I 擴充到一個文件名和擴展名 
:: %~fsI - 僅將 %I 擴充到一個帶有短名的完整路徑名 
:: %~dp$PATH:i - 查找列在路徑環境變量的目錄,並將 %I 擴充 
:: 到找到的第一個驅動器號和路徑。 
:: %~ftzaI - 將 %I 擴充到類似輸出線路的 DIR

下面是實例解析:

如果一個install.bat文件位於D:\jeesite\bin
文件內容如下:

@echo off
echo [INFO] This is a demo.
echo [INFO] %~dp0
pause

  運行install.bat,命令行輸出如下

[INFO] This is a demo.
[INFO] D:\jeesite\bin\

  

即:
%0代表文件本身
d代表盤符
p代表路徑
擴展的選項還包括:

%~f0 - 完整的路徑+文件名

[INFO] D:\jeesite\bin\install.bat

%~n0 - 文件名(無擴展名)

[INFO] install
%~x0 - 文件擴展名

[INFO] .bat

%~s0 - 擴充的路徑只含有短名(“s”為Short,短的)
%~a0 - 將 %0 擴充到文件的文件屬性(“a”為attribute,即屬性)
%~t0 - 將 %0 擴充到文件的日期/時間(“t”time)
%~z0 - 將 %0 擴充到文件的大小(Size 大小)

等等


免責聲明!

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



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