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

所属分类: 脚本专栏 / DOS/BAT 阅读数: 1621
收藏 0 赞 0 分享

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

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

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

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

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

(注:%0就是该batch文件的文件名 )

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

下面给个图

扩充变量语法详解:
:: 选项语法 :
:: ~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 大小)

等等

更多精彩内容其他人还在看

for 语句从入门到精通

在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能
收藏 0 赞 0 分享

dos 目录跳转 cd

当我们需要处理不同路径下的文件的时候,很可能需要切换目录,这个时候,可以考虑使用目录跳转命令cd。
收藏 0 赞 0 分享

tree 以树形格式罗列文件

tree ,在英语中的基本含义是“树”,在cmd中,tree命令的功能是以树形格式罗列文件。
收藏 0 赞 0 分享

dos 内容重定向

当我们在cmd窗口中查询某条命令的帮助信息的时候,帮助信息是显示在命令行窗口中的,命令行窗口关闭后,这些帮助信息就看不到了,如果下次还想看,又得在命令行窗口中输入查询命令,比较繁琐。
收藏 0 赞 0 分享

执行批处理bat程序中的条件处理

一直用bat实现部分功能,对于我们仍需要控制是否满意我们的要求,下面是if帮助文档,方便查询
收藏 0 赞 0 分享

不错的批处理脚本 第一部分

非常不错的批处理脚本代码,功能比较多,用到了,很多的批处理机器
收藏 0 赞 0 分享

不错的批处理脚本实例代码 第二部分

不错的批处脚本实例代码,用到了批处理中的很多技巧与知识点,不懂得可以逐一查找相关资料
收藏 0 赞 0 分享

开机更新桌面主题的批处理代码

更新桌面主题的批处理代码
收藏 0 赞 0 分享

非常好的for 教程, 当时我就是看这个学习for 的第1/2页

批处理for命令详解 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号)
收藏 0 赞 0 分享

批处理的"循环"效果脚本

曾经在回答一个问题时 无意中想到的方法 今天又看到类似的问题 个人认为是非常实用的 于是 想把这种方法推荐给大家
收藏 0 赞 0 分享
查看更多