BAT脚本中%~dp0(获取当前目录)

%~dp0的含义 : 获取批处理文件的目录。

一、%~dp0的含义分析:

在D:\test\bat目录下有一个test.bat文件,内容如下:

@echo off
echo dp0 = %~dp0
pause

运行效果:

 具体分析下%~dp0的含义

~                是扩展的意思,变量扩充(下面详细介绍),相当于把一个相对路径转换绝对路径
%0             代指批处理文件自身(绝对路径 "D:\test\bat\test.bat",注意有双引号)
%~d0         是指批处理所在的盘符,其中d代表drive。(扩充到盘符 D: )
%~p0         是指批处理所在的目录,其中p代表path。(扩充到路径 \test\bat\ )
%~dp0       是批处理所在的盘符加路径。(扩充到盘符和路径 :D:\test\bat\)

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

二、扩展下test.bat脚本

@echo off
echo 当前盘符:%~d0
echo 当前路径:%~p0
echo 当前盘符和路径:%~dp0
echo 当前批处理(%0文件)全路径:%~f0
echo 当前盘符和路径的短文件名格式:%~sdp0
echo 当前CMD默认目录:%cd%
pause

效果:

 

 

三、扩充变量语法详解

可以参考命令 call /?

C:\Users\DELL>call /?
从批处理程序调用另一个批处理程序。

CALL [drive:][path]filename [batch-parameters]

  batch-parameters   指定批处理程序所需的命令行信息。

如果命令扩展被启用,CALL 会如下改变:

CALL 命令现在将卷标当作 CALL 的目标接受。语法是:

    CALL:label arguments

一个新的批文件上下文由指定的参数所创建,控制在卷标被指定
后传递到语句。你必须通过达到批脚本文件末两次来 "exit" 两次。
第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次
会退出批脚本。键入 GOTO /?,参看 GOTO :EOF 扩展的描述,
此描述允许你从一个批脚本返回。

另外,批脚本文本参数参照(%0、%1、等等)已如下改变:


     批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)

     批参数(%n)的替代已被增强。你可以使用以下语法:

         %~1         - 删除引号("),扩展 %1
         %~f1        - 将 %1 扩展到一个完全合格的路径名
         %~d1        - 仅将 %1 扩展到一个驱动器号
         %~p1        - 仅将 %1 扩展到一个路径
         %~n1        - 仅将 %1 扩展到一个文件名
         %~x1        - 仅将 %1 扩展到一个文件扩展名
         %~s1        - 扩展的路径只含有短名
         %~a1        - 将 %1 扩展到文件属性
         %~t1        - 将 %1 扩展到文件的日期/时间
         %~z1        - 将 %1 扩展到文件的大小
         %~$PATH:1   - 查找列在 PATH 环境变量的目录,并将 %1
                       扩展到找到的第一个完全合格的名称。如果
                       环境变量名未被定义,或者没有找到文件,
                       此修改符会扩展到空字符串

    可以组合修改符来取得多重结果:

        %~dp1       - 只将 %1 扩展到驱动器号和路径
        %~nx1       - 只将 %1 扩展到文件名和扩展名
        %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,
                      并扩展到找到的第一个文件的驱动器号和路径。
        %~ftza1     - 将 %1 扩展到类似 DIR 的输出行。

    在上面的例子中,%1 和 PATH 可以被其他有效数值替换。
    %~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %*
    使用

C:\Users\DELL>

四、%cd%和%~dp0获取当前目录区别

%cd%%~dp0都能用来表示当前目录,但是他们在不同的使用场景下,功能却不相同:

  • %cd% 代表的是执行文件的当前工作目录(强调bat是在哪里启动的,可变的);
  • %~dp0 代表的是当前批处理文件所在完整目录(强调bat的文件位置,固定的)。

  • 20
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值