.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是在执行某个批处理结束之前是不会改变的,因为代表的是脚本文件在磁盘的位置。

你可能感兴趣的:(Dos/bat)