看网上介绍区别,写的好复杂,其实很简单:

%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 执行结果是:

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

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

dos 批处理中%cd% 和%~dp0%的区别的更多相关文章

  1. DOS批处理中%cd%和%~dp0的区别

    DOS批处理中%cd%和%~dp0的区别   在DOS的批处理中,有时候需要知道当前的路径. 在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0.       这两个变量 ...

  2. DOS批处理中%cd%和%~dp0的区别[forward]

    DOS批处理中%cd%和%~dp0的区别   在DOS的批处理中,有时候需要知道当前的路径. 在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0.      这两个变量的 ...

  3. DOS批处理中%cd%与%~dp0的区别详解

    转载:https://www.jb51.net/article/105325.htm DOS批处理中%cd%与%~dp0的区别详解     Windows下批处理中%cd%和%~dp0都能用来表示当前 ...

  4. DOS批处理中%cd%和%~dp0的异同分析

    在DOS的批处理中,有时候需要知道当前的路径.在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0. 这两个变量的用法和代表的内容是不同的. 1. %cd% 可以用在批处理 ...

  5. DOS批处理中%~dp0表示什么意思

    https://www.jianshu.com/p/5a1a882ead95 https://www.cnblogs.com/cnpirate/p/5282324.html https://www.c ...

  6. DOS批处理中%~dp0等扩充变量语法详解

    有时候我们看到别人使用%~dp0 ~是扩展的意思,相当于把一个相对路径转换绝对路径%0代指批处理文件自身%1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推%~d0 是指批处理所在的盘 ...

  7. DOS批处理中对含有特殊字符的文件名的处理方法

    从一些网站下载的文件,文件名带有广告,典型的就是网站的名称和域名,搞得文件名很长.在一些场景下,广告看得见,真正的文件名却被...了.在以前,我是遇到就手工去掉广告,但一是麻烦,二是效率低.反正经常下 ...

  8. 解决DOS批处理中一个困扰我几十个月的编码问题

    DOS批处理中的编码很有意思.&是命令连接符,先执行&左边的命令,再执行&右边的命令.|是管道操作,把左边的输出当作右边的输入.此外还有&&和||,当要表示这些 ...

  9. 转载:dos批处理中路径获取

    在DOS的批处理中,有时候需要知道当前的路径. 在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0.      这两个变量的用法和代表的内容是不同的.  1. %cd% ...

随机推荐

  1. Springmvc 定时器的实现

    有时候会需要项目中,定时去执行一些东西,这个时候就需要用到定时器了.比较简单, 当你springmvc环境搭建成功的时候. 本文转载自:https://www.cnblogs.com/wqj-blog ...

  2. Javascript全栈技术架构

    https://worktile.com/tech/basic/the-worktile-tech-stack https://worktile.com/tech/basic/worktile-rea ...

  3. 【转】c#的逆向工程-IL指令集

    转载自:http://www.cnblogs.com/davyjiang/articles/1337400.html 一些 IL 语言解释: 跳转指令集合Beq 如果两个值相等,则将控制转移到目标指令 ...

  4. hive2.3.2安装使用

    hive的安装简单一些,使用也比较简单,基础hadoop搭建好之后,只要初始化一些目录和数据库就好了 安装需要做几件事: 1.设立一个数据源作为元数据存储的地方,默认是derby内嵌数据库,不过不允许 ...

  5. PCL点云特征描述与提取(2)

    点特征直方图(PFH)描述子 正如点特征表示法所示,表面法线和曲率估计是某个点周围的几何特征基本表示法.虽然计算非常快速容易,但是无法获得太多信息,因为它们只使用很少的几个参数值来近似表示一个点的k邻 ...

  6. PCL关键点(1)

    关键点也称为兴趣点,它是2D图像或是3D点云或者曲面模型上,可以通过定义检测标准来获取的具有稳定性,区别性的点集,从技术上来说,关键点的数量相比于原始点云或图像的数据量减小很多,与局部特征描述子结合在 ...

  7. 一些有用的js插件

    getfuelux.com  一系列插件合集 Ion.RangeSlider 超级牛的范围选择控件 Ion.CheckRadio Ion.Tabs Ion.Calendar Ion.ImageSlid ...

  8. Web服务端开发需要考虑的问题

    API设计 是否Restful. 首先需要清楚,Restful是一种风格而不是规范,不存在必须遵守的问题. Restful本质上是对HTTP API进行有效的分类. 分类是应该的,可以让API组织变得 ...

  9. ggplot2 pdf import in Adobe Illustrator missing font AdobePiStd

    The font AdobePiStd is missing. Affected text will be displayed using a substitute font. 缺少字体 AdobeP ...

  10. 浅谈跨域以WebService对跨域的支持

    跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...