有人可以帮我理解命令cd /d %~dp0及其用途。 再次dos命令如下
cd /d %~dp0
请帮我弄清楚它的含义。
我们来剖析一下。 有三个部分:
-
cd
– 这是更改目录命令。 -
/d
– 这个开关让cd
改变驱动器和目录。 没有它,你将不得不做cd %~d0 & cd %~p0
。 -
%~dp0
– 这可以进一步分为三个部分:-
%0
– 这表示批处理脚本的第零个参数。 它扩展到batch file本身的名称。 -
%~0
– 在那里解开扩展参数的双引号("
)。 -
%dp0
–d
和p
有扩展的修饰符。d
强制添加一个驱动器号并添加完整path。
-
见for /? 更多细节
批处理文件中的一条语句意思是更改当前目录为批处理本身的目录
有些晕吧?不急,我举例
比如你有个批处理a.bat在D:\xunjs文件夹下
a.bat内容为
cd /d %~dp0
在这里
cd /d 注解:
(通常情况下,我们要进入其他盘符下的任意目录,需要在CMD窗口运行两次命令:第一次,进入盘符,第二次进入指定目录
#进入D盘
d:
#进入D盘下的test目录
cd xunjs
通过使用CD命令,并加入参数 /d ,可以通过一个步骤,直接进入指定盘符下的任意文件夹。
#一个步骤进入D盘下的test目录
cd /d d:\xunjs
)
cd /d %~dp0的意思就是cd /d d:\xunjs
%0代表批处理本身 d:\xunjs\a.bat
~dp是变量扩充
d既是扩充到分区号 d:
p就是扩充到路径 \xunjs
dp就是扩充到分区号路径 d:\xunjs