這篇文章給大家分享的是有關(guān)DOS批處理中%cd%與%~dp0的區(qū)別是什么的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
問題描述
假設(shè)我們要在批處理a.bat里調(diào)用執(zhí)行批處理b.bat
,b.bat
需要知道b.bat
的當前位置,并執(zhí)行run.exe
,如下:
// directory structure // c: // -a.bat // -program // -b.bat // -run.exe // a.bat call "%cd%\program\b.bat" // b.bat "%cd%\run.exe"
那么現(xiàn)在能不能成功執(zhí)行run.exe
呢?
問題分析
%cd%
和%~dp0
都能用來表示當前目錄,但是他們在不同的使用場景下,功能卻不相同:
%cd%
代表的是當前工作目錄(current working directory,variable);
%~dp0
代表的是當前批處理文件所在完整目錄(the batch file's directory,fixed)。
我們來看看下面的例子:
// directory structure // c: // -c.bat // -program // -d.bat // c.bat call "%cd%\program\d.bat" // d.bat @echo off echo cd = %cd% echo dp0 = %~dp0
直接運行d.bat
,結(jié)果為
cd = C:\program dp0 = C:\program\
直接運行c.bat
,結(jié)果為
cd = C:\ dp0 = C:\program\
從上面的結(jié)果可以看出:
執(zhí)行d.bat
時,當前工作目錄為d.bat
所在目錄;
執(zhí)行c.bat
時,當前工作目錄為c.bat
所在目錄,即使在調(diào)用d.bat
后,該工作目錄依舊是c.bat
所在目錄。
問題解決
讓我們再來看看問題描述中提及的問題——能不能成功執(zhí)行run.exe
呢?
答案是:不能?!?code>%cd%\run.exe ”表示的是“C:\run.exe
”,并非“C:\program\run.exe
”。那么如何更改呢?
有兩種方案:
// plan A // change the current working directory // a.bat cd "%~dp0" call "%cd%\program\b.bat" // b.bat cd "%~dp0" "%cd%\run.exe" // plan B // using %~dp0 directly // a.bat call "%~dp0program\b.bat" // b.bat "%~dp0run.exe"
問題延伸
上面的解決方案中plan A通過更改當前目錄來解決該問題,可以這里面也存在另外一個問題,讓我們看下面的例子:
// directory structure // c: // -program // -f.bat // d: // -e.bat // plan A // change the current working directory // e.bat cd "%~dp0" call "c:\program\f.bat" // f.bat cd "%~dp0" "%cd%\run.exe"
現(xiàn)在e.bat
和f.bat
不在同一個盤符了,從e.bat
切換當前工作目錄到f.bat
直接使用cd是不行的,必須要使用:
cd /d "%~dp0"
這個地方容易疏忽,切記不要犯錯。
問題總結(jié)
我們來重申下%~dp0
和%cd%
的區(qū)別, %cd%
和%~dp0
都能用來表示當前目錄,但是他們在不同的使用場景下,功能卻不相同:
%cd%
代表的是當前工作目錄(current working directory,variable);
%~dp0
代表的是當前批處理文件所在完整目錄(the batch file's directory,fixed)。
從目前我們的使用情況來看,盡量使用%~dp0
,不建議使用%cd%
,有其他需求除外。
感謝各位的閱讀!關(guān)于“DOS批處理中%cd%與%~dp0的區(qū)別是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
網(wǎng)頁題目:DOS批處理中%cd%與%~dp0的區(qū)別是什么-創(chuàng)新互聯(lián)
當前地址:http://jinyejixie.com/article18/dpphdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站收錄、響應式網(wǎng)站、網(wǎng)站維護、網(wǎng)站內(nèi)鏈、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容