最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年02月12日 15:03:06   作者:木子兮  
Windows下批處理中%cd%和%~dp0都能用來(lái)表示當(dāng)前目錄,但是他們?cè)诓煌氖褂脠?chǎng)景下,功能卻不相同。下面這篇文章就來(lái)給大家詳細(xì)介紹了DOS批處理中%cd%與%~dp0的區(qū)別,需要的朋友可以參考借鑒。

問(wèn)題描述

假設(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.bat
call "%cd%\program\b.bat"
// b.bat
"%cd%\run.exe"

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

問(wèn)題分析

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

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

我們來(lái)看看下面的例子:

// 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

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

cd = C:\program
dp0 = 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所在目錄。

問(wèn)題解決

讓我們?cè)賮?lái)看看問(wèn)題描述中提及的問(wèn)題——能不能成功執(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"

問(wèn)題延伸

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

// 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不在同一個(gè)盤(pán)符了,從e.bat切換當(dāng)前工作目錄到f.bat直接使用cd是不行的,必須要使用:

cd /d "%~dp0"

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

問(wèn)題總結(jié)

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

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

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

總結(jié)

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

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論

汤原县| 乐至县| 旌德县| 伊金霍洛旗| 息烽县| 虞城县| 托里县| 正阳县| 辛集市| 齐河县| 北海市| 平南县| 宁德市| 松溪县| 北宁市| 鄂托克前旗| 平阴县| 辽中县| 陈巴尔虎旗| 津南区| 麻栗坡县| 渭源县| 常德市| 元朗区| 浦北县| 东方市| 武功县| 克拉玛依市| 鄂尔多斯市| 苗栗县| 任丘市| 科技| 兰考县| 玉树县| 高淳县| 顺昌县| 红安县| 乡宁县| 荆门市| 阿拉善盟| 清苑县|