VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > 批处理教程 >
  • 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 执行结果是:

可见,是以当前命令所在的文件路径为准的咯。

 

注意,批处理想把变量名称本身, 要在外层在加一个%%。

出处:https://www.cnblogs.com/xiami303/p/4066919.html


相关教程