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

博客介绍了DOS批处理中路径变量的相关知识。以install.bat文件为例,说明了%0及扩展选项的含义。还详细解析了cd /D %~dp0的作用,即更改当前目录为批处理本身的目录。此外,对比了%cd%和%~dp0的用法与区别,前者内容可改变,后者由批处理文件目录位置决定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.jianshu.com/p/5a1a882ead95

https://www.cnblogs.com/cnpirate/p/5282324.html

https://www.cnblogs.com/langtianya/p/5171169.html

**************************************************

如果一个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 大小)

**************************

转载自 www.cnblogs.com/yxsylyh 转载内容如下:

cd /D %~dp0的意思如下:

更改当前目录为批处理本身的目录 
比如你有个批处理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 

扩展阅读:

%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录
cd是转到这个目录,不过我觉得cd /d %~dp0 还好些

选项语法:

    ~0         - 删除任何引号("),扩充 %0
    %~f0        - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)
    %~d0        - 仅将 %0 扩充到一个驱动器号
    %~p0        - 仅将 %0 扩充到一个路径
    %~n0        - 仅将 %0 扩充到一个文件名(“n”是name 文件名)
    %~x0        - 仅将 %0 扩充到一个文件扩展名
    %~s0        - 扩充的路径只含有短名(“s”为Short,短的)
    %~a0        - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)
    %~t0        - 将 %0 扩充到文件的日期/时间(“t”time)
    %~z0        - 将 %0 扩充到文件的大小(Size 大小)
    %~$PATH:0   - 查找列在路径环境变量的目录,并将 %0 扩充
                  到找到的第一个完全合格的名称。如果环境变量名
                  未被定义,或者没有找到文件,此组合键会扩充到
                  空字符串

可以组合修饰符来得到多重结果:

    %~dp0       - 仅将 %0 扩充到一个驱动器号和路径
    %~nx0       - 仅将 %0 扩充到一个文件名和扩展名
    %~fs0       - 仅将 %0 扩充到一个带有短名的完整路径名
    %~dp$PATH:0 - 查找列在路径环境变量的目录,并将 %I 扩充
                  到找到的第一个驱动器号和路径。
    %~ftza0     - 将 %0 扩充到类似输出线路的 DIR

%0为当前批处理文件
如果0换成1为第一个文件,2为第2个

**************************

DOS批处理中%cd%和%~dp0的区别

 

在DOS的批处理中,有时候需要知道当前的路径。

在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0。
 

    这两个变量的用法和代表的内容是不同的。
 

    1. %cd% 可以用在批处理文件中,也可以用在命令行中;

展开后,是驱动器盘符:+当前目录,如在dos窗口中进入c:\dir目录下面,  www.2cto.com  

输入:echo %cd% ,则显示为:c:\dir 。
 

   %cd%的内容是可以被改变的,其内容为命令的执行路径或批处理文件的执行路径。

    2.%~dp0只可以用在批处理文件中,它是由它所在的批处理文件的目录位置决定的,

是批处理文件所在的盘符:+路径。在执行这个批处理文件的过程中,

它展开后的内容是不可以改变的。比如在D盘下有个批处理文件,path.bat,其内容为:

 

[plain]

@echo off     

echo this is %%cd%%  %cd%     

echo this is %%~dp0 %~dp0   

 

在C:\ 和E:\分别下执行它,输出为

c:\>d:\Path.bat

this is %cd% c:\
this is %~dp0 d:\


c:\>e:
e:\>d:\Path.bat

this is %cd% e:\
this is %~dp0 d:\

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值