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

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

等等

(0)

相关推荐

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

    有时候我们看到别人使用%~dp0 ~是扩展的意思,相当于把一个相对路径转换绝对路径 %0代指批处理文件自身 %1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推 %~d0 是指批处理所在的盘符,其中d代表drive %~p0 是指批处理所在的目录,其中p代表path %~dp0 是批处理所在的盘符加路径 cd %~dp0 就是进入批处理所在目录了 详细解释还可参考命令 call /? DOS批处理中%~dp0表示什么意思 (注: %0 就是该 batch 文件的文件名) 这句的意

  • python中的常量和变量代码详解

    局部和全局变量: # name='lhf' # def change_name(): # # global name # name='帅了一比' # print('change_name',name) # # # change_name() # print(name) # name='lhf' # # def change_name(): # name1='帅了一比' # name2='帅了一比' # name3='帅了一比' # print('change_name',name) # # ch

  • DOS批处理之DATE命令的使用方法详解

    1.系统帮助 C:\>date /? 显示或设置日期. DATE [/T | date] 仅键入 DATE 而不加参数,可以显示当前日期设置,并且提示 您输入新的日期.按 ENTER 键即可保持原有日期. 如果命令扩展名被启用,DATE 命令会支持 /T 命令选项:该命令选项告诉 命令只输出当前日期,但不提示输出新日期. 2.DATA /T 参数说明 此参数输出当前日期,例如: C:\>DATE /T 2002-10-28 星期一 这个日期格式可能不同与环境变量中的日期格式,如 C:\>

  • 浅析C++中dynamic_cast和static_cast实例语法详解

    目录 1. static_cast 1.2 为什么要有static_cast等 1.2 static_cast的作用 1.3 static_cast用法 2. dynamic_cast 2.1 dynamic_cast 语法 2.2 dynamic_cast 用法 2.3 dynamic_cast 实例 1. static_cast 1.1 static_cast语法 static_cast< new_type >(expression) 备注:new_type为目标数据类型,expressi

  • Java关键字、标识符、常量、变量语法详解

    一.关键字 关键字:被Java语言赋予特定含义的单词.组成关键字的字母全部小写.注:goto和const作为保留字存在,目前并不使用.main并不是关键字. 二.标识符 标识符:就是给类,接口,方法,变量等起名字时使用的字符序列. 组成规则:英文大小写字母.数字字符.$和_ 注意事项:不能以数字开头.不能是Java中的关键字.区分大小写 我们通常会给下面的这些东西起一个标识符: 包.类或者接口.方法和变量.常量 三.注释 单行注释的格式: //注释文字 多行注释的格式: /* 注释文字 */ 文

  • javascript中正则表达式语法详解

    好久都没有写博客了,主要是太懒了,尤其是在阳春三月,风和日丽的日子,太阳暖暖的照在身上,真想美美的睡上一觉.就导致了这篇博客拖到现在才开始动笔,javascript的正则这一块也不是什么新的东西,主要是以前本人一遇到写正则的需求就开始头大,头疼,网上剽窃,东拼西凑,反正就是各种不适应,所以我打算系统的把正则表达式看一遍,一来是自己有所提升,这一块知识点的查漏补缺,二来是给大家分享一下.好了,下面我们直接进入主题: 正则是匹配字符串特定模式的一种表达式,官方是这样说的,但我的理解不外乎就是匹配字符

  • Java中==符号与equals()的使用详解(测试两个变量是否相等)

    Java 程序中测试两个变量是否相等有两种方式:一种是利用 == 运算符,另一种是利用equals()方法. 当使用 == 来判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数据类型严格相同),则只要两个变量的值相等,就返回true. 但是对于两个引用类型变量,只有它们指向同一个对象时, == 判断才会返回true. == 不可用于比较类型上没有父子关系的两个对象. 很多书上说equals()方法是判断两个对象的值相等.这种说法不准确.实际上equals()方法是O

  • python中的map函数语法详解

    目录 1map()函数的简介以及语法: 2map()函数实例: 1 map()函数的简介以及语法: map是python内置函数,会根据提供的函数对指定的序列做映射. map()函数的格式是: map(function,iterable,...) 第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合. 把函数依次作用在list中的每一个元素上,得到一个新的list并返回.注意,map不改变原list,而是返回一个新list. 2 map()函数实例: del squa

  • 变量延迟详解 call setlocal

    对于批处理新手而言,"变量延迟"这个概念很可能闻所未闻,但是,它却像一堵横亘在你前进道路上的无形高墙,你感受不到它的存在,但当你试图往前冲时,它会把你狠狠地弹回来,让你无法逾越.无功而返:而一旦找到了越过它的方法,你就会发现,在for的世界里,前面已经是一片坦途,而你对批处理的理解,又上升到了一个新的境界. 例如,你编写了这样一个代码: @echo off set num=0&&echo %num% pause 你的本意是想对变量num赋值之后,再把这个值显示出来,结果

  • 基于JS脚本语言的基础语法详解

    JS脚本语言的基础语法:输出语法  alert("警告!");  confirm("确定吗?");   prompt("请输入密码");为弱类型语言: 开始时要嵌入JS代码:<script type="text/javascript"></script>: 关于写程序是需注意的基本语法: 1.所有的字符全都是英文半角的: 2.大部分情况下每条语句结束后要加分号: 3.每一块代码结束后加换行:4.程序前呼

随机推荐