Bat脚本中%cd%和%~dp0的区别

Bat脚本中%cd%和%~dp0的区别

%cd%和 %~dp0在bat脚本中出现的频率比较高,两者有相似,也有不同,稍不留神就会出错。

本文通过示例来解析两者的不同

使用范围:

%cd%:批处理脚本(bat脚本)、命令行窗口

%~dp0:批处理脚本(bat脚本)

bat脚本执行时,两者代表的值是否会变化:

%cd%:会。因为代表的是当前目录

%~dp0:不会。因为代表的是脚本文件在磁盘的位置

示例脚本内容:

cd-dp0.bat

@echo off

echo this is %%cd%% : %cd%

echo this is %%~dp0 : %~dp0

(1)在C:\Users\Administrator执行脚本

C:\Users\Administrator>f:\cd-dp0.bat

执行结果:

this is %cd% :C:\Users\Administrator

this is %~dp0 :f:\

(2)在F:\执行脚本

F:\>cd-dp0.bat

执行结果:

this is %cd% :F:\

this is %~dp0 :F:\

%dp0在bat脚本中的一个常用例子:

run.bat:

@echo off

setlocal ENABLEDELAYEDEXPANSION

set CP=.;JavaStudy.jar

FOR %%j IN (%~dp0lib\*.jar) DO set CP=!CP!;%%j

echo %CP%

java -cp %CP% frame.App