前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >批处理文件中%~dp0是什么意思?

批处理文件中%~dp0是什么意思?

作者头像
全栈程序员站长
发布于 2022-09-28 03:17:53
发布于 2022-09-28 03:17:53
4.3K0
举报

大家好,又见面了,我是你们的朋友全栈君

看批处理文件时,常遇到%~dp0之类的东西,不知其意思。打开Windows XP自带的帮助系统,搜索“batch”关键字,能找到有关介绍批处理文件的帮助。通过帮助我终于明白了%~dp0是什么意思,总结如下:

我们知道,%*是用来指批处理文件传入的参数。例如%0表示命令本身,%1表示传入的第一个参数,以此类推。开发一个批处理命令,有时候需要知道这个命令的路径、传入参数的路径等这些与路径相关的信息。一般的编程语言会提供一些类库或者API来完成与路径相关的任务,例如.NET中提供了File类、Directory类和Path类来做这些事情。在批处理文件中,使用%~*来完成与路径相关的任务,语法规则可以表示如下:

%~(f|d|p|n|x|s|a|t|z|$PATH)*[0-9]

先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,这里执行的批处理命令行是:

F:\Temp>Batch\test “C:\Program Files\studying.txt”

上述的语法规则解释如下:

1. %~[0-9]:是指去除了引号的命令行参数

%~0指命令行本身,本例为Batch\test

%~1指第一个参数,本例为C:\Program Files\studying.txt 注:%1也指第一个参数,本例却为“C:\Program Files\studying.txt”,这里是有引号的。

以此类推……

2. %~f[0-9]:f – full,指绝对路径名

本例中:%~f0 – F:\Temp\Batch\test.bat

%~f1 – C:\Program Files\studying.txt

3. %~d[0-9]:d – driver,指盘符

本例中:%~d0 – F:

%~d1 – C:

4. %~p[0-9]:p – path,指不带盘符的目录名

本例中:%~p0 – \Temp\Batch\ 注:前后都有’\’

%~p1 – \Program Files\

5. %~ n[0-9]:n – name,指文件的名字,注意不带扩展名

本例中:%~n0 – test

%~n1 – studying

6. %~x[0-9]:x – extension,指文件的扩展名

本例中:%~x0 – .bat 注:前面有’.’

%~x1 – .txt

7. %~s[0-9]:s – short,指带有DOS短名字(8字符)的绝对路径

本例中:%~s0 – F:\TEMP\BATCH\test.bat

%~s1 – C:\PROGRA~1\studying.txt

注:这里的目录名全是大写,而文件名全是小写

8. %~a[0-9]:a – attribute,指文件的属性

本例中:%~a0 – –a——-

%~a1 – –a——-

注:这里每一位代表一种文件属性,具体的含义我也不知道,待查

9. %~t[0-9]:t – time,指文件的修改日期,注意不是创建日期

本例中:%~t0 – 2011-08-28 11:47

%~t1 – 2011-08-28 10:30

10. %~z[0-9]:z – size,指文件的大小

11. %~$PATH:[0-9]:PATH 指系统环境变量的那个PATH。搜索PATH里面的目录,看是否能够找到命令行参数指定的文件。找到此文件,输出该文件的绝对路径;没有找到此文件,输出空字符串。

12. 组合使用:上述的这些字符规则是可以组合起来使用的。例如,n和x组合表示带扩展名的文件名名字。

%~nx0 – test.bat

%~nx1 – studying.txt

回到标题给出的问题,我们可以推测出%~dp0表示的意思。d表示盘符,p表示不带盘符的路径,那么dp就表示带盘符的路径了。在本例中,我们可以得出:

%~dp0 – F:\Temp\Batch\

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193233.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月2日 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【数据结构】排序算法篇二
任取待排序元素序列中的某元素作为基准值key(把它直接排在它最终要排的那个位置),按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。
六点半就起.
2024/10/16
910
【数据结构】排序算法篇二
【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]
假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。(就是相同的数据排序之后的相对次序保持不变)
云边有个稻草人
2025/03/16
480
【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]
【初阶数据结构】星河中的光影 “排” 象:排序(下)
接上一篇,解决掉剩余的排序方法,本篇有些许难度,建议巩固好上一篇再来进行本篇的学习
DARLING Zero two
2025/02/26
600
【初阶数据结构】星河中的光影 “排” 象:排序(下)
数据结构-排序
        在插入排序的基础上,分组进行排序,把每隔gap个元素看作一组进行排序,gap每次都细分最后细分到最基本的插入排序
2024/08/06
980
《数据结构》八大排序算法 必读!
本文将介绍常见八大排序,包括直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序以及计数排序(计数排序和桶排序面试基本不涉及,本文将简要介绍),本内容是重点中的重点,请务必全部掌握!
码神联盟
2021/10/27
1.2K0
《数据结构》八大排序算法 必读!
数据结构初阶·排序算法(内排序)
目前常见的排序算法有9种,冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序,计数排序,基数排序,桶排序。实际生活中排序的应用也是有限的,今天我们介绍其中7个,基数排序和桶排序不介绍。介绍常用的即可。
_lazy
2024/10/16
1160
数据结构初阶·排序算法(内排序)
八大常见算法排序详解
在以前排序算法不多的时候,科学家们想着如何优化时间复杂度… 这时希尔想到,插入排序最坏的情况是 O(N^2) ,是在序列逆序的情况下,以目标排升序为例,最大的数字在最前面,那么要是将插入进行分组会不会交换的更快?答案是确实是快了! 因为将插入排序的思想进行分组插入后,如果分组越大,那么大的数字能更快的向后移动,而分组越小,大的数字就会越慢的向后移动。相反,分组越大,那么这个序列也越不接近有序,而分组越小,反而越接近有序。 所以希尔就根据这种特点,创造了缩小增量排序的基本思想! 简单来说: 希尔排序是按照不同步长对元素进行插入排序,==当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小,插入排序对于有序的序列效率很高。==所以,希尔排序的时间复杂度会比o(n^2)好一些。 实质就是一种分组插入的思想! 希尔排序的特性总结:
利刃大大
2023/04/12
3650
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
排序是指使用一串记录,按照其中或某些关键字的大小,递增或递减的排序起来的操作(记录是指待排序的具体数据项)。
是店小二呀
2024/08/01
1500
【初阶数据结构】深度解析七大常见排序|掌握底层逻辑与原理
【初阶数据结构与算法】排序算法总结篇(每个小节后面有源码)(直接插入、希尔、选择、堆、冒泡、快速、归并、计数以及非递归快速、归并排序)
   那么本次的排序算法总结就分享到这里啦,初阶数据结构与算法这个篇章的知识也就到这里结束啦,凑巧也是2024年最后一篇文章,从2025年开始就进入C++的学习啦,感谢大家近来的支持,大家新年快乐!    bye~
TANGLONG
2025/01/09
1060
【数据结构】排序(下)
当我们使用快速排序时,最坏的情况就是数组有序,此时的时间复杂度为O(N^2) 最好的情况就是key每次取中位数 所以我们为了避免最坏情况的发生,我们在快速排序的基础上衍生了一种优化的方法叫做三数取中 还有一种方法是随机选key,但随机选key的效果不如三数取中
s-little-monster
2024/06/18
1010
【数据结构】排序(下)
手撕初阶数据结构之---排序
排序:所谓排序,就是使⼀串记录,按照其中的某个或某些关键字的⼤⼩,递增或递减的排列起来的操作。
Undoom
2024/09/23
660
手撕初阶数据结构之---排序
【数据结构】——原来排序算法搞懂这些就行,轻松拿捏
基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。
用户11286421
2024/09/23
940
【数据结构】——原来排序算法搞懂这些就行,轻松拿捏
【初阶数据结构与算法】——手撕八大经典排序算法
那如果前面的元素都比要插入的数据大呢? 那就一直比,直到比完第一个元素,然后end- -之后变成-1,还是放到end位置的后面,即让它成为新的第一个元素。
YIN_尹
2024/01/23
3420
【初阶数据结构与算法】——手撕八大经典排序算法
【数据结构】-图解八大排序(思路+实现+总结)
八大排序详解 一、前言 二、排序概念及应用 1、概念 2、排序应用 三、排序算法接口展示 四、插入排序 1、直接插入排序 2、希尔排序 五、选择排序 1、直接选择排序 2、堆排序 六、交换排序 1、冒泡排序 2、快速排序 1)hoare 2)挖坑法 3)前后指针法 4)优化 3、快排非递归 七、归并排序 1、归并排序 1)递归归并 2)非递归归并 八、计数排序 1、计数排序 九、性能分析 一、前言 本章主要讲解: 八大排序的基本知识及其实现 注:这里的八大排序指直接插入,希尔,选择,堆排,冒泡,快排,归
用户9645905
2022/11/30
4470
【数据结构】-图解八大排序(思路+实现+总结)
【排序算法】八大排序(下)(c语言实现)(附源码)
之前我们学习了八大排序中的前四种:冒泡排序、选择排序、插入排序、希尔排序:
ephemerals__
2024/10/24
1970
【排序算法】八大排序(下)(c语言实现)(附源码)
十大排序:插入/希尔/选择/堆/冒泡/快速/归并/计数/基数/桶排序 汇总(C语言)
在计算机科学中,排序算法是一种重要的算法类别,用于将一组元素按照特定的顺序进行排列。排序算法的应用非常广泛,从日常生活中的字典排序到大规模数据处理中的并行排序,都离不开排序算法的支持。
用户11317877
2024/10/16
1690
十大排序:插入/希尔/选择/堆/冒泡/快速/归并/计数/基数/桶排序 汇总(C语言)
八大排序(二)堆排序,快速排序,归并排序,计数排序
堆排序其实就是利用堆的第二个特点:任一结点的值都是其子树所有结点的最大值或最小值。
小灵蛇
2024/06/06
1140
八大排序(二)堆排序,快速排序,归并排序,计数排序
数据结构——排序算法
冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,以升序为例,一次比较两个元素,如果它们的顺序错误(前一个元素大于后一个元素)就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
HZzzzzLu
2024/11/26
1020
数据结构——排序算法
【数据结构】八大排序算法详解
把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列
用户10925563
2024/06/04
7800
【数据结构】八大排序算法详解
【初阶数据结构】常见五大排序算法及部分算法优化讨论
1.排序:所谓排序,就是使一串记录或者数据,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。
ZLRRLZ
2024/12/13
1800
【初阶数据结构】常见五大排序算法及部分算法优化讨论
推荐阅读
相关推荐
【数据结构】排序算法篇二
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档