国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > BAT > 正文

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

2020-07-26 20:11:05
字體:
供稿:網(wǎng)友

問題描述

假設(shè)我們要在批處理a.bat里調(diào)用執(zhí)行批處理b.bat,b.bat需要知道b.bat的當(dāng)前位置,并執(zhí)行run.exe,如下:

// directory structure// c:// -a.bat// -program//  -b.bat//  -run.exe// a.batcall "%cd%/program/b.bat"http:// b.bat"%cd%/run.exe"

那么現(xiàn)在能不能成功執(zhí)行run.exe呢?

問題分析

%cd%%~dp0都能用來表示當(dāng)前目錄,但是他們?cè)诓煌氖褂脠?chǎng)景下,功能卻不相同:

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

我們來看看下面的例子:

// directory structure// c:// -c.bat// -program//  -d.bat// c.batcall "%cd%/program/d.bat"http:// d.bat@echo offecho cd = %cd%echo dp0 = %~dp0

直接運(yùn)行d.bat,結(jié)果為

cd = C:/programdp0 = C:/program/

直接運(yùn)行c.bat,結(jié)果為

cd = C:/dp0 = C:/program/

從上面的結(jié)果可以看出:

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

問題解決

讓我們?cè)賮砜纯磫栴}描述中提及的問題――能不能成功執(zhí)行run.exe呢?

答案是:不能。“ %cd%/run.exe ”表示的是“ C:/run.exe ”,并非“ C:/program/run.exe ”。那么如何更改呢?

有兩種方案:

// plan A// change the current working directory// a.batcd "%~dp0"call "%cd%/program/b.bat"http:// b.batcd "%~dp0""%cd%/run.exe"http:// plan B// using %~dp0 directly// a.batcall "%~dp0program/b.bat"http:// b.bat"%~dp0run.exe"

問題延伸

上面的解決方案中plan A通過更改當(dāng)前目錄來解決該問題,可以這里面也存在另外一個(gè)問題,讓我們看下面的例子:

// directory structure// c:// -program//  -f.bat// d:// -e.bat// plan A// change the current working directory// e.batcd "%~dp0"call "c:/program/f.bat"http:// f.batcd "%~dp0""%cd%/run.exe"

現(xiàn)在e.batf.bat不在同一個(gè)盤符了,從e.bat切換當(dāng)前工作目錄到f.bat直接使用cd是不行的,必須要使用:

cd /d "%~dp0"

這個(gè)地方容易疏忽,切記不要犯錯(cuò)。

問題總結(jié)

我們來重申下%~dp0%cd%的區(qū)別, %cd%%~dp0都能用來表示當(dāng)前目錄,但是他們?cè)诓煌氖褂脠?chǎng)景下,功能卻不相同:

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 华阴市| 门头沟区| 宁乡县| 信丰县| 济阳县| 喀什市| 永平县| 积石山| 满洲里市| 湘潭县| 耒阳市| 衡东县| 南昌市| 博野县| 黄冈市| 北流市| 舒兰市| 永登县| 株洲市| 忻城县| 临城县| 舞阳县| 从江县| 南木林县| 武宣县| 琼海市| 宜宾市| 景泰县| 北票市| 青浦区| 正蓝旗| 故城县| 波密县| 茂名市| 鄂伦春自治旗| 邢台市| 南皮县| 鹤岗市| 确山县| 兴业县| 兖州市|