我有一個批處理腳本,我想要獲取腳本的完整路徑。我很好奇,是有這之間的任何差別:批處理腳本:%0和%〜f0有什麼區別?
set scriptpath=%0
這:
set scriptpath=%~f0
感謝您的幫助。
我有一個批處理腳本,我想要獲取腳本的完整路徑。我很好奇,是有這之間的任何差別:批處理腳本:%0和%〜f0有什麼區別?
set scriptpath=%0
這:
set scriptpath=%~f0
感謝您的幫助。
%0
引用參數0 - 批處理文件的名稱 - 總是完全按照在命令行或其他批處理文件中指定的名稱。
因此,如果命名存儲在C:\Temp
Test.bat
批處理文件啓動例如從一個命令提示窗口內與當前的目錄是用C:\
temp\test
,然後%0
通過temp\test
對參考取代。
但%~f0
被取代幾乎總是通過批處理文件名與文件擴展名和完整路徑 - 完整的文件名 - 始終沒有雙引號,即使文件名或路徑包含1個或多個字符,如空間或&()[]{}^=;!'+,`~
通常需要使用雙引號。
因此批處理文件Test.bat
存儲在C:\Temp
與線
@echo %0
@echo %~f0
從命令提示符窗口中開始"temp\test.bat"
與當前目錄是C:\
輸出:
"temp\test.bat"
C:\Temp\Test.bat
你可以在這裏都可以見到差異:
的%~f0
的描述和其他替代可以在命令CALL輸出上運行在命令提示符窗口for /?
和閱讀運行call /?
或命令的幫助有關所有顯示的頁面的幫助下閱讀。
注1:
如果批處理文件以後需要和當前目錄從批處理文件中使用任何CD或PUSHD修改分配完全合格的批處理文件名稱的環境變量。原因請參閱In Batch file ~dp0 changes on changing directory上的答案。
注2:
運行上述從C:\
例如批處理文件只是"temp\test"
導致輸出:
"temp\test"
C:\Temp\Test
文件擴展名是缺少其由第一的引用主題中所述的錯誤引起的注意。開始temp\test
批處理文件沒有雙引號產生預期的輸出:
temp\test
C:\Temp\Test.bat
類型爲'/'和_read_,或者點擊[瀏覽](http://ss64.com/nt/syntax-args。 html) – Aacini