![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 15:57 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求一个能取当前执行的bat文件所在目录方法。 |
| 可打印版本 13,255 / 20 |
| 第1楼 cmd9x | 发表于 2007-01-18 22:53 |
| 新手上路 发帖 3 积分 8 | |
|
求一个能取当前执行的bat文件所在目录方法。 因为bat文件需要执行一个跟它在一个目录下的某个文件,但是bat文件的位置是不确定的,原来写成这样:
SET CurPath=%0 IF NOT "%CurPath%"=="" set CurPath=%CurPath:~0,-9% echo %CurPath% 但是有时执行时是对的,有时得到的结果却是错的,要么前后都多一个字符,要不就都少一个字符。 谁能帮帮心,多谢了 |
|
| 第2楼 redtek | 发表于 2007-01-18 23:00 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
%CD% 这个环境变量内容就是当前所在目录。
例:显示当前目录 |
|
| 第3楼 jmz573515 | 发表于 2007-01-18 23:20 |
| 银牌会员 发帖 464 积分 1,212 | |
|
高,加分。
|
|
| 第4楼 cmd9x | 发表于 2007-01-18 23:58 |
| 新手上路 发帖 3 积分 8 | |
|
这个我知道了,我是想说,如果我是这样执行bat
C:\abc>D:\abc.bat 那么怎么取到"D:\abc" |
|
| 第5楼 redtek | 发表于 2007-01-19 00:23 |
| 金牌会员 发帖 1,147 积分 2,902 | |
| 第6楼 hxuan999 | 发表于 2007-01-19 00:50 |
| 中级用户 发帖 161 积分 337 | |
|
'%~dp0'所得到的路径中最后一个字符总是\,所有用的时候要注意了.比如调用它下面的abc.bat就要写成'%~dp0abc.bat',
另外你并不知道路径中有无空格,所以最好用双引号引起来,或是写成'%~sdp0'用路径的短名形式. |
|
| 第7楼 cmd9x | 发表于 2007-01-19 02:06 |
| 新手上路 发帖 3 积分 8 | |
|
太厉害了,多谢了
|
|
| 第8楼 xuyuansheng | 发表于 2007-01-20 00:28 |
| 初级用户 发帖 8 积分 20 | |
|
但,如果你的这个批处理文件(x.bat)放到一个含有空格的路径中,将什么也得不到。
可以试试: [curpath.bat] echo %cd% > curpath.txt 查看curpath.txt就可以了。 |
|
| 第9楼 lxmxn | 发表于 2007-01-20 07:21 |
| 版主 发帖 4,938 积分 11,386 | |
|
|
|
| 第10楼 jmz573515 | 发表于 2007-03-14 08:22 |
| 银牌会员 发帖 464 积分 1,212 | |
| 第11楼 merryheart0424 | 发表于 2007-05-25 10:47 |
| 初级用户 发帖 10 积分 28 | |
Originally posted by hxuan999 at 2007-1-19 12:50 AM: 请教一下,'%~dp0' '%~sdp0' 具体是什么意思? 怎么我输入试了一下没有显示路径呢? |
|
| 第12楼 lxmxn | 发表于 2007-05-25 15:09 |
| 版主 发帖 4,938 积分 11,386 | |
|
To merryheart0424:
演示一下: 保存为test.bat文件运行. [ Last edited by lxmxn on 2007-5-25 at 03:10 PM ] |
|
| 第13楼 graper | 发表于 2007-06-28 18:58 |
| 新手上路 发帖 4 积分 8 | |
如何只取当前文件的上级目录名称Originally posted by lxmxn at 2007-5-25 03:09 PM: 上面这个直接以BAT方式运行可以工作,但如果用工具编译成EXE文件就不行了,路径会变成系统临时目录的路径:( 别外如果我只想取当前文件的上级目录名称如何写呢? 比如当前文件为C:\AAAA\BBB\TEST.BAT 我只要取得BBB这个目录名称 先谢谢了 |
|
| 第14楼 lxmxn | 发表于 2007-06-28 20:59 |
| 版主 发帖 4,938 积分 11,386 | |
上面这个直接以BAT方式运行可以工作,但如果用工具编译成EXE文件就不行了,路径会变成系统临时目录的路径:( 编译bat文件为exe文件的工具是死的东西,稍微把批处理变换一下就会出问题,似乎批处理的很多扩展功能,编译工具都完成的不是很好。 如果你只是为了迎合编译工具的要求,那就另当别论了。 取当前文件的上级目录的名称可以参考下面这个代码: |
|
| 第15楼 byxyk | 发表于 2007-06-28 21:15 |
| 初级用户 发帖 54 积分 112 | |
|
%0这个参数并不是一成不变的。
1.资源管理器中双击执行 2.CMD中全路径运行 3.CMD中当前目录下运行 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |