dos 批處理中%cd% 和%~dp0%的區別


看網上介紹區別,寫的好復雜,其實很簡單:

%cd%  在批處理和命令窗口都能使用。用於打印,當前工作路徑。

%~dp0% 則只能用於批處理中,用於獲得當前批處理文件所在的路徑。

 

做個試驗試一下:

@echo off     
echo this is %%cd%%  %cd%     
echo this is %%~dp0 %~dp0   

echo switch to another folder:
cd d:\Program Files (x86)
echo this is %%cd%%  %cd%     
echo this is %%~dp0 %~dp0 

pause

結果發現%cd% 是可以在腳本中通過cd 切換到別的目錄的,打印的路徑是動態的。

 

事實上,應該注意的是,使用的場景多半不同,  cd 到不同的工作路徑,是dos常用操作。而%cd%就是為了得到當前的工作路徑而設置的。

 

 

但是,另外一種常用的需求就是獲取當前bat文件所在的路徑,那這個路徑就需要用%~dp0%。 這里有一點兒麻煩的情況就是bat1 再調用bat2, 到底獲取的是哪個路徑呢?

做個試驗,試一下便知道了:

t1.bat:

@echo off
echo this is t1.bat
echo %%~dp0%% get path: %~dp0% 
cd D:\learn\Bat\codes
call t2.bat
pause

 

t2.bat: 

echo this is t2.bat
echo %%~dp0%% get path : %~dp0%
pause

 

t1在d盤根目錄,t2.bat 在D:\learn\Bat\codes。  執行t1.bat 執行結果是:

可見,是以當前命令所在的文件路徑為准的咯。

 

注意,批處理想把變量名稱本身, 要在外層在加一個%%。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM