.bat批处理(四):路径相关%cd%和%~dp0的区别
前言
在批处理脚本的使用过程中,有时候会用到路径相关的操作,比如当前路径如果是XXX,就执行XX命令等,其实在DOS命令中,有两个环境变量可以跟当前路径有关,一个是%cd%
, 一个是%~dp0
。但是这两个变量的用法和代表的内容是不同的,我们一起来分析一下。
内容
%cd%
可以用在批处理文件中,也可以用在命令行中,内容为执行命令所在的目录(包含驱动器盘符)。%~dp0
只可以用在批处理文件中,由所在的批处理文件的目录位置决定的,内容为批处理文件所在的目录(包含驱动器盘符)。- 比如我们在目录
D:\>F:\batTool\
下新建一个文件命名为test_dir.bat,其中的代码内容如下:
@echo off
::对比%cd%和%~dp0的不同
echo %%cd%% = %cd%
echo %%~dp0 = %~dp0
- 我们在不同的目录下执行的结果如下:
F:\batTool>
test_dir.bat
%cd% = F:\batTool
%~dp0 = F:\batTool\F:\batTool>
cd /d E:
E:>
F:\batTool\test_dir.bat
%cd% = E:\
%~dp0 = F:\batTool\E:>
cd /d D:
D:>
F:\batTool\test_dir.bat
%cd% = D:\
%~dp0 = F:\batTool\
总结
%cd%
表示执行命令时所在的目录,%~dp0
表示批处理文件所在的目录。%cd%
是可以改变的,因为它表示的是当前目录,如果在批处理中使用了cd
命令就会改变他的值。%~dp0
是在执行某个批处理结束之前是不会改变的,因为代表的是脚本文件在磁盘的位置。