DOS批处理中%~dp0等扩充变量语法详解
DOS批处理中%~dp0等扩充变量语法详解
发布时间:2016-12-28 来源:查字典编辑
摘要:有时候我们看到别人使用%~dp0~是扩展的意思,相当于把一个相对路径转换绝对路径%0代指批处理文件自身%1表示批处理文件命令行接收到的第一个...

有时候我们看到别人使用%~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:jeesitebin

文件内容如下:

@echo off echo [INFO] This is a demo. echo [INFO] %~dp0 pause

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

[INFO] This is a demo. [INFO] D:jeesitebin

即:

%0代表文件本身

d代表盘符

p代表路径

扩展的选项还包括:

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

[INFO] D:jeesitebininstall.bat

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

[INFO] install

%~x0 - 文件扩展名

[INFO] .bat

%~s0 - 扩充的路径只含有短名(“s”为Short,短的)

%~a0 - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)

%~t0 - 将 %0 扩充到文件的日期/时间(“t”time)

%~z0 - 将 %0 扩充到文件的大小(Size 大小)

等等

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新DOS/BAT学习
热门DOS/BAT学习
脚本专栏子分类