楼 主
(已解决)如何在dos下获得当前批处理所在的路径?
发表于 2008-06-23 00:24 · 中国 河南 郑州 电信
初级用户
★
积分 35
发帖 14
注册 2008-04-28 23:49
18年会员
UID 117220
性别 男
状态 离线
如何在dos下获得当前批处理所在的路径?我试过 %~dp0无效。
谢谢
[ Last edited by winlong102 on 2008-6-23 at 10:08 PM ]
第 2 楼
发表于 2008-06-23 02:36 · 中国 吉林 吉林市 电信
初级用户
★
夜语者
积分 58
发帖 29
注册 2007-04-22 11:37
19年会员
UID 86081
性别 男
来自 地狱十九重
状态 离线
我用有效啊
冰我喜欢你

无论如何,坚守最后的良知!
thirteen.pdx.cn
第 3 楼
发表于 2008-06-23 08:33 · 中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
这个,似乎纯DOS没有提供类似的功能。
fpath是一个在纯DOS下找可执行程序路径的程序,但似乎只适合在搜索路径中查找。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子”和“
这个帖子”并努力遵守,如果可能,请告诉更多的人!
第 4 楼
发表于 2008-06-23 08:54 · 中国 江苏 苏州 联通
初级用户
★
积分 27
发帖 13
注册 2008-06-21 09:52
18年会员
UID 120670
性别 男
状态 离线
不知道你是不是这个意思?试试这个看看是否符合你的要求:
@echo off
echo 当前路径是:%cd%
echo 当前盘符是:%cd:~0,1%
pause
第 5 楼
发表于 2008-06-23 11:18 · 中国 河南 郑州 电信
初级用户
★
积分 35
发帖 14
注册 2008-04-28 23:49
18年会员
UID 117220
性别 男
状态 离线
谢谢上面所有人的答复 我说得是dos 不是cmd,呵呵
应该 纯DOS没有提供类似的功能
第 6 楼
发表于 2008-06-23 18:07 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
第 7 楼
发表于 2008-06-23 21:57 · 中国 河南 郑州 电信
初级用户
★
积分 35
发帖 14
注册 2008-04-28 23:49
18年会员
UID 117220
性别 男
状态 离线
第 8 楼
发表于 2008-06-23 22:27 · 中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
用strings只是提取路径中的盘符,并不等于能够得到批处理的运行路径。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子”和“
这个帖子”并努力遵守,如果可能,请告诉更多的人!
第 9 楼
发表于 2008-06-24 07:37 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
Originally posted by Climbing at 2008-6-23 22:27:
用strings只是提取路径中的盘符,并不等于能够得到批处理的运行路径。
既可提取盘符,也可提取目录。
两个参数一起用就可得到完整路径。
第 10 楼
发表于 2008-06-24 12:30 · 中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。
请问,你的X.bat该如何写才能得到自己本身所在的路径?
我肯定这不是Strings能够做到的。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子”和“
这个帖子”并努力遵守,如果可能,请告诉更多的人!
第 11 楼
发表于 2008-06-24 12:56 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
Originally posted by Climbing at 2008-6-24 12:30:
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。
请问,你的X.bat该如何 ...
可以肯定地回答,可以。
结果就是"c:\"
运行结果看下图。
只要你自己试试strings就知道了。呵呵。
假如试过不行的话,我写出那两行命令。
第 12 楼
发表于 2008-06-24 12:59 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
Originally posted by Climbing at 2008-6-24 12:30:
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。
请问,你的X.bat该如何 ...
引用 “看问题不能凭想象,实践才能出真知。 ”, 呵呵。
第 13 楼
发表于 2008-06-24 13:39 · 中国 河北 保定 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
嗯,我知道了:
strings filedrive %0
strings filedir %0
其实,还可以用:fpath %0
但要提取出来,也得配合其它的程序了。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“
这个帖子”和“
这个帖子”并努力遵守,如果可能,请告诉更多的人!
第 14 楼
发表于 2008-06-25 12:12 · 中国 河南 郑州 电信
初级用户
★
积分 35
发帖 14
注册 2008-04-28 23:49
18年会员
UID 117220
性别 男
状态 离线
第 15 楼
发表于 2008-06-25 21:55 · 中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
可以考虑分别不用strings
分别用
dir /s/b %0
和
for %%p in (%path%) do dir /b %%p.\%0
探测
应该能得到绝大数情况下的批处理所在路径
至于如果将标准输出转存至环境变量
那可利用的方法有很多
就不多讨论了
论坛跳转: