vb.net 执行脚本bat_脚本学习:%cd%和%~dp0的区别

问题

在编写自动化脚本过程中,经常会需要获取当前目录路径。

这里有两种方式,一种是%cd%,另一种是%~dp0,那么这两种方式有什么区别呢?今天就来具体讲一讲。

具体含义

%cd%:脚本执行的当前目录,需要注意的是,这里的当前目录有可能和脚本实际所在目录不一致。

%~dp0%:脚本文件所在的目录,注意,目录的路径为全路径,并且带结尾的

例如:我们编写一个简单的BAT脚本,命名为Test.bat,内容如下:

e2a045b995d5b58871fa03c2ef93da57.png

首先在D盘根目录下新建文件夹,命名为”脚本学习”,然后拷贝以上BAT脚本文件到此文件夹下。

测试场景1:在 D:脚本学习 目录下,双击执行脚本

执行结果如下:

d039d6d7edbdf84a0dc4f7d37052cae3.png

分析如下:

双击执行BAT脚本文件,对于%cd%来说,其值为当前目录,也即 D:脚本学习,注意这里路径的结尾没有

对于%~dp0来说,其值为BAT脚本所在目录,即:D:脚本学习,注意这里的路径里带有

我们在E盘根目录下新建文件夹,也命名为”脚本学习”,然后将BAT脚本从 D:脚本学习 移动到 E:脚本学习 下。

测试场景2:从 D:脚本学习 目录进入cmd窗口,并执行:E:脚本学习Test.bat

执行结果如下:

19a1bda0a4ce9fe7d686901d9a887920.png

分析如下:

从 D:脚本学习 目录进入cmd窗口,当前目录为 D:脚本学习,所以虽然Test.bat位于 E:脚本学习,但是%cd%仅会打印当前目录,也即 D:脚本学习。

对于%~dp0来说,其值为BAT脚本所在目录,虽然当前目录为D:脚本学习,但是%~dp0还是会打印脚本文件实际所在的路径,即:E:脚本学习

再次注意,这里的值是带有号的。

使用范围

%cd%:可以在BAT脚本中使用,也可以在命令行窗口中使用。

%~dp0:仅可以在BAT脚本中使用。

我的建议

有时需要稳定的相对路径关系来编制自动化脚本,我们希望获取的当前目录路径与脚本的执行环境无关。由于%cd%和脚本执行的当前目录有关,所以BAT脚本在不同目录下执行的时候,其值会发生改变,而%~dp0始终指向BAT脚本文件所在路径,因此,尽量使用%~dp0来获取当前目录比较靠谱。

23beb6d573db560b50d0be6f1bd7894b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值