标题: [其他] 批处理%~dp0怎么回事啊? [打印本页]
作者: 1130342432 时间: 2011-7-11 10:41 标题: 批处理%~dp0怎么回事啊?
关于%~dp0的,网上都是前篇一律,看不懂,汗!
有没有人愿意举个例子来说明一下,万分感谢!
作者: CUer 时间: 2011-7-11 10:49
- @echo off
- echo 我是一个批处理文件,我的所在的文件夹是:%~dp0
- pause
复制代码
作者: 1130342432 时间: 2011-7-11 10:54
~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 扩充到找到的第一个完全合格的名称。
如果环境变量名未被定义,或者没有找到文件,此组合键会扩充到空字符串
那么这些又是说明意思?
作者: wolonga123 时间: 2011-7-11 10:58
3# 1130342432
那你就把那位兄弟代码里的%~dp0依次改呗,试试就知道了
作者: 1130342432 时间: 2011-7-11 11:07
多谢朋友提醒!
但这种命令到底有说明用?
作者: ArdentMan 时间: 2011-7-11 11:15
要弄清楚这个问题先要了解几个概念性的东西:
d(Drive)指的是所在的盘符根目录,如D:
p(Path)指的是当前路径,如\test\temp
n(Name)指的是文件夹或文件的名字,如test
x(extensionname)指的是文件的后缀名,如.bat
%0指的是文件自身(批处理),相当于"%~dpnx0",实际上这个%0是参数,而批的参数有%0-%9共10个,除了%0外,其余的参数都是由别的语块(多见子程序)或脚本传递给本语块或脚本的,如Call a.bat bathome ArdentMan中bathome和ArdentMan就是传递的参数,分别为%1 %2
综上所述%~dp0就是表示将test.bat自身的绝对路径(D:\test\temp)传递给脚本进行调用。
作者: temp 时间: 2011-7-11 11:16
5# 1130342432
其实微软的说明俺也看的稀里糊涂,就按4楼提供的办法,自己测试自己领悟吧
作者: mxxcgzxxx 时间: 2011-7-11 11:20
把3楼自己的说明对照6楼看清,用2楼代码实验,基本能理解这个问题了
作者: ArdentMan 时间: 2011-7-11 11:20
同时建议楼主看看这个帖子:
http://www.bathome.net/viewthrea ... hlight=%C0%A9%D5%B9
作者: cjiabing 时间: 2011-7-11 12:41
- @echo off
- echo %~dp0 ##显示自身路径
- echo %* ##显示拖曳进来的文件完全合格路径名
- echo %cd% ##路径
- ::同%~p0
- echo %0 ##完全合格路径名,带双引号
- ::同%~f0
- echo %~n0 ##文件名
- echo %~d0 ##驱动器
- echo %~p0 ##路径
- echo %~f0 ##完全合格路径名
- echo %~x0 ##扩展名
- echo %~s0 ##路径只含短名
- echo %~a0 ##文件属性
- echo %~t0 ##文件日期
- echo %~z0 ##文件大小
- echo %~t0 ##文件日期
- echo %~$PATH:0
- ::%cd% 表示自身的路径
- ::%0 表示自身的完整路径(即批处理自身,包含驱动器、路径、文件名和后缀名)
- ::start "" %cd%
- pause
-
- @echo off&setlocal enabledelayedexpansion
- for /f "" %%a in (%0) do (
- set bsd=%%~da
- set bsdp=%%~dpa
- )
- echo !bsd!
- echo !bsdp!
- cd /d f:\
- dir *.*
- cd /d !bsdp!
- dir *.*
- pause
复制代码
作者: tangqingfu 时间: 2013-6-21 17:15
学习中,谢谢分享!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |