位置: 编程技术 - 正文

DOS批处理中%cd%与%~dp0的区别详解(dos批处理命令大全)

编辑:rootadmin

推荐整理分享DOS批处理中%cd%与%~dp0的区别详解(dos批处理命令大全),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:dos批处理实例,dos常用命令与批处理文件,dos批处理中执行bat,批处理 cd /d,dos批处理实例800例,dos 批处理,dos批处理中执行bat,dos批处理实例800例,内容如对您有帮助,希望把文章链接给更多的朋友!

问题描述

假设我们要在批处理a.bat里调用执行批处理b.bat,b.bat需要知道b.bat的当前位置,并执行run.exe,如下:

那么现在能不能成功执行run.exe呢?

问题分析

%cd%和%~dp0都能用来表示当前目录,但是他们在不同的使用场景下,功能却不相同:

%cd%代表的是当前工作目录(current working directory,variable); %~dp0代表的是当前批处理文件所在完整目录(the batch file's directory,fixed)。

我们来看看下面的例子:

直接运行d.bat,结果为

直接运行c.bat,结果为

从上面的结果可以看出:

执行d.bat时,当前工作目录为d.bat所在目录; 执行c.bat时,当前工作目录为c.bat所在目录,即使在调用d.bat后,该工作目录依旧是c.bat所在目录。DOS批处理中%cd%与%~dp0的区别详解(dos批处理命令大全)

问题解决

让我们再来看看问题描述中提及的问题——能不能成功执行run.exe呢?

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

有两种方案:

问题延伸

上面的解决方案中plan A通过更改当前目录来解决该问题,可以这里面也存在另外一个问题,让我们看下面的例子:

现在e.bat和f.bat不在同一个盘符了,从e.bat切换当前工作目录到f.bat直接使用cd是不行的,必须要使用:

这个地方容易疏忽,切记不要犯错。

问题总结

我们来重申下%~dp0和%cd%的区别, %cd%和%~dp0都能用来表示当前目录,但是他们在不同的使用场景下,功能却不相同:

%cd%代表的是当前工作目录(current working directory,variable); %~dp0代表的是当前批处理文件所在完整目录(the batch file's directory,fixed)。

从目前我们的使用情况来看,尽量使用%~dp0,不建议使用%cd%,有其他需求除外。

总结

本文链接地址:https://www.jiuchutong.com/biancheng/371630.html 转载请保留说明!

上一篇:通过拖曳获取文件信息的bat代码分享(拖曳对象时用的命令)

下一篇:dos命令行choice命令使用详解(dos命令/s)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络