批处理文件中%~dp0是什么意思?
来源:互联网 发布:深入浅出数据分析笔记 编辑:程序博客网 时间:2024/04/19 19:51
看批处理文件时,常遇到%~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\
- 批处理文件中%~dp0是什么意思?
- 批处理文件中的%~dp0表示含义
- windows脚本(.bat): %~dp0 是什么意思
- cd /d %~dp0是什么意思啊?
- cd /d %~dp0是什么意思啊?
- ~dp0
- 批处理文件的@echo off是什么意思?
- 批处理文件的@echo off是什么意思?
- 批处理文件的@echo off是什么意思?
- DOS批处理中%~dp0表示什么意思
- DOS批处理中%~dp0用法说明
- dos批处理中%~dp0%的说明
- DOS批处理中%~dp0表示什么意思
- 批处理文件,窗口中显示
- 批处理文件中输入换行
- windows中批处理文件
- DOS批处理中%cd%和%~dp0的异同
- DOS批处理中%cd%和%~dp0的异同
- SO_SNDBUF设置为0会发生什么事情
- mysql 删除和修改的时候,where 条件中使用原table报错的问题
- RMI
- VxWorks入门级开发环境学习
- 向tabControl中添加一个Form(C#)
- 批处理文件中%~dp0是什么意思?
- USACO Section 1.5 题解
- 很受启发的视频啊~~视频: 史蒂夫 乔布斯 2005年 斯坦福大学 演讲(中英字幕)
- java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
- 团购导航网站开发要点
- 路由事件和命令
- POJ 2001:Shortest Prefixes(字典树)
- 计算机领域论文来源
- oracle中导出和导入部分blob,clob字段