%~dp0:批次檔存在的目錄位置
請試著執行下面例子感受兩者間的差異:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @ECHO OFF CLS REM ================ REM == 先比較效果 == REM ================ ECHO =============================================== ECHO == [Step1] 看起來沒什麼不同, 除了結尾的斜線 ... ECHO =============================================== ECHO %%CD%% = %CD% ECHO %%~dp0 = %~dp0 REM ========================== REM == 切換工作目錄再做比較 == REM ========================== IF NOT EXIST TEMP MKDIR TEMP CD TEMP ECHO =============================================== ECHO == [Step2] 切換工作目錄後, 發生差異了! ECHO =============================================== ECHO %%CD%% = %CD% ECHO %%~dp0 = %~dp0 CD .. :CLEAN RMDIR /S /Q TEMP |
上面例子可以明確知道:
- %~dp0表示批次檔所存在的位置, 是不會因切換工作目錄而改變。
- %CD%表示的是當前工作目錄位置, 如果用CD之類的指令切換工作目錄, 則%CD%會改變成對應的目錄。
關於%~dp0其實是%0參數的衍伸用法(可以使用CALL /?查閱詳細說明)
首先執行下面例子先看看結果:
1 2 3 4 5 6 7 8 | @ECHO OFF CLS ECHO %%0 = %0 ECHO %%~d0 = %~d0 ECHO %%~p0 = %~p0 ECHO %%~n0 = %~n0 ECHO %%~x0 = %~x0 |
從CALL /?的說明頁面中, 得知在參數%n(%0, %1, ... %9)之間加了波浪符號(~)與相關的修飾字詞後, 就會有擴充的支援。
- %0:第0個參數, 表示批次檔本身。
- %~d0:Dirver, 批次檔存在的磁碟機代號。
- %~p0:Path, 批次檔的路徑位置(不包含磁碟機代號)。
- %~n0:批次檔的檔案名稱。
- %~x0:批次檔的副檔名。
- 所有的修飾字詞可以混搭使用, 所以%~dp0即是批次檔所在的完整路徑。
- 修飾字詞還有~f, ~a, ...等, 請參考程式說明頁面。
謝謝分享OWO/
回覆刪除剛好用到~
版主 你好
回覆刪除之前用
start /max excel.exe
後來..
因 dde 作業會有所衝突
可以,
懇請 幫忙寫一個批次檔嗎?
謝謝~
作業是
1.執行 Win鍵+R (不知這指令是??)
2.執行 excel /x
麻煩幫幫忙 感恩~~