婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > DOS批處理中%cd%與%~dp0的區(qū)別詳解

DOS批處理中%cd%與%~dp0的區(qū)別詳解

熱門標簽:南陽高頻外呼系統(tǒng)怎么安裝 貴陽電話外呼系統(tǒng)廠家 高德百度地圖標注推廣 菏澤電銷外呼系統(tǒng)軟件 蘇丹地圖標注app 地圖標注店鋪的收費 外呼系統(tǒng)解決電銷問題 京東辦理400電話查詢 為什么申請400電話

問題描述

假設我們要在批處理a.bat里調用執(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,結果為

cd = C:\program
dp0 = C:\program\

直接運行c.bat,結果為

cd = C:\

dp0 = C:\program\

從上面的結果可以看出:

  1. 執(zhí)行d.bat時,當前工作目錄為d.bat所在目錄;
  2. 執(zhí)行c.bat時,當前工作目錄為c.bat所在目錄,即使在調用d.bat后,該工作目錄依舊是c.bat所在目錄。

問題解決

讓我們再來看看問題描述中提及的問題——能不能成功執(zhí)行run.exe呢?

答案是:不能?!?%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.batf.bat不在同一個盤符了,從e.bat切換當前工作目錄到f.bat直接使用cd是不行的,必須要使用:

cd /d "%~dp0"

這個地方容易疏忽,切記不要犯錯。

問題總結

我們來重申下%~dp0%cd%的區(qū)別, %cd%%~dp0都能用來表示當前目錄,但是他們在不同的使用場景下,功能卻不相同:

  • %cd%代表的是當前工作目錄(current working directory,variable);
  • %~dp0代表的是當前批處理文件所在完整目錄(the batch file's directory,fixed)。

從目前我們的使用情況來看,盡量使用%~dp0,不建議使用%cd%,有其他需求除外。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:
  • DOS批處理中%cd%和%~dp0的異同分析

標簽:昌都 海北 滄州 通遼 咸寧 阿里 韶關 資陽

巨人網絡通訊聲明:本文標題《DOS批處理中%cd%與%~dp0的區(qū)別詳解》,本文關鍵詞  DOS,批處理,中,%cd%,與,dp0,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《DOS批處理中%cd%與%~dp0的區(qū)別詳解》相關的同類信息!
  • 本頁收集關于DOS批處理中%cd%與%~dp0的區(qū)別詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 满城县| 泊头市| 镇平县| 阜南县| 平顺县| 仁布县| 沾化县| 平谷区| 巴林右旗| 武宣县| 六盘水市| 中山市| 张北县| 仪陇县| 光山县| 临安市| 丘北县| 烟台市| 波密县| 迁西县| 榕江县| 东方市| 沅江市| 南皮县| 彭泽县| 蓬安县| 友谊县| 沂源县| 江陵县| 凤城市| 常熟市| 华安县| 平安县| 仙桃市| 澄江县| 隆子县| 靖远县| 海口市| 昌都县| 中牟县| 延安市|