当前位置: 移动技术网 > IT编程>网络>Dos/Bat > DOS批处理中%~dp0等扩充变量语法详解

DOS批处理中%~dp0等扩充变量语法详解

2017年12月01日  | 移动技术网IT编程  | 我要评论

有时候我们看到别人使用%~dp0

~是扩展的意思,相当于把一个相对路径转换绝对路径
%0代指批处理文件自身
%1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推
%~d0 是指批处理所在的盘符,其中d代表drive
%~p0 是指批处理所在的目录,其中p代表path
%~dp0 是批处理所在的盘符加路径


cd %~dp0 就是进入批处理所在目录了


详细解释还可参考命令 call /?

dos批处理中%~dp0表示什么意思

(注: %0 就是该 batch 文件的文件名)
这句的意思是
更改当前目录为批处理本身的目录
有些晕吧?不急,我举例
比如你有个批处理 a.bat 在 d:/qq 文件夹下
a.bat 内容为
cd /d %~dp0
在这里
cd /d %~dp0 的意思就是 cd /d d:/qq
%0 代表批处理本身 d:/qq/a.bat
~dp 是变量扩充
d 既是扩充到分区号 d:
p 就是扩充到路径 /qq
dp 就是扩充到分区号路径 d:/qq

扩充变量语法详解:
:: 选项语法 :
:: ~i - 删除任何引号 (") ,扩充 %i
:: %~fi - 将 %i 扩充到一个完全合格的路径名
:: %~di - 仅将 %i 扩充到一个驱动器号
:: %~pi - 仅将 %i 扩充到一个路径
:: %~ni - 仅将 %i 扩充到一个文件名
:: %~xi - 仅将 %i 扩充到一个文件扩展名
:: %~si - 扩充的路径只含有短名
:: %~ai - 将 %i 扩充到文件的文件属性
:: %~ti - 将 %i 扩充到文件的日期 / 时间
:: %~zi - 将 %i 扩充到文件的大小
:: %~$path:i - 查找列在路径环境变量的目录,并将 %i 扩充
:: 到找到的第一个完全合格的名称。如果环境变量名
:: 未被定义,或者没有找到文件,此组合键会扩充到
:: 空字符串
:: 可以组合修饰符来得到多重结果 :
:: %~dpi - 仅将 %i 扩充到一个驱动器号和路径
:: %~nxi - 仅将 %i 扩充到一个文件名和扩展名
:: %~fsi - 仅将 %i 扩充到一个带有短名的完整路径名
:: %~dp$path:i - 查找列在路径环境变量的目录,并将 %i 扩充
:: 到找到的第一个驱动器号和路径。
:: %~ftzai - 将 %i 扩充到类似输出线路的 dir

下面是实例解析:

如果一个install.bat文件位于d:\jeesite\bin
文件内容如下:

@echo off
echo [info] this is a demo.
echo [info] %~dp0
pause

运行install.bat,命令行输出如下

[info] this is a demo.
[info] d:\jeesite\bin\

即:
%0代表文件本身
d代表盘符
p代表路径
扩展的选项还包括:

%~f0 - 完整的路径+文件名

[info] d:\jeesite\bin\install.bat

%~n0 - 文件名(无扩展名)

[info] install
%~x0 - 文件扩展名

[info] .bat

%~s0 - 扩充的路径只含有短名(“s”为short,短的)
%~a0 - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)
%~t0 - 将 %0 扩充到文件的日期/时间(“t”time)
%~z0 - 将 %0 扩充到文件的大小(size 大小)

等等

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网