中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » (已解决)如何在dos下获得当前批处理所在的路径?
« [1] [2] »
作者:
标题: (已解决)如何在dos下获得当前批处理所在的路径? 上一主题 | 下一主题
winlong102
初级用户





积分 35
发帖 14
注册 2008-4-28
状态 离线
『楼 主』:  (已解决)如何在dos下获得当前批处理所在的路径?

如何在dos下获得当前批处理所在的路径?我试过 %~dp0无效。
谢谢

[ Last edited by winlong102 on 2008-6-23 at 10:08 PM ]

2008-6-23 00:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
thirteen
初级用户

夜语者



积分 58
发帖 29
注册 2007-4-22
来自 地狱十九重
状态 离线
『第 2 楼』:  

我用有效啊



冰我喜欢你


无论如何,坚守最后的良知!
thirteen.pdx.cn
2008-6-23 02:36
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 3 楼』:  

这个,似乎纯DOS没有提供类似的功能。

fpath是一个在纯DOS下找可执行程序路径的程序,但似乎只适合在搜索路径中查找。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-23 08:33
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
lixin12345
初级用户





积分 27
发帖 13
注册 2008-6-21
状态 离线
『第 4 楼』:  

不知道你是不是这个意思?试试这个看看是否符合你的要求:
@echo off
echo 当前路径是:%cd%
echo 当前盘符是:%cd:~0,1%
pause

2008-6-23 08:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
winlong102
初级用户





积分 35
发帖 14
注册 2008-4-28
状态 离线
『第 5 楼』:  

谢谢上面所有人的答复  我说得是dos 不是cmd,呵呵

应该 纯DOS没有提供类似的功能

2008-6-23 11:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 6 楼』:  

借助第三方工具。
比如strings等



Windows 一键还原
http://www.yjhy.com
2008-6-23 18:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
winlong102
初级用户





积分 35
发帖 14
注册 2008-4-28
状态 离线
『第 7 楼』:  

呵呵  感谢 lianjiang答复。

2008-6-23 21:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 8 楼』:  

用strings只是提取路径中的盘符,并不等于能够得到批处理的运行路径。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-23 22:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by Climbing at 2008-6-23 22:27:
用strings只是提取路径中的盘符,并不等于能够得到批处理的运行路径。

既可提取盘符,也可提取目录。
两个参数一起用就可得到完整路径。



Windows 一键还原
http://www.yjhy.com
2008-6-24 07:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 10 楼』:  

假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。

请问,你的X.bat该如何写才能得到自己本身所在的路径?

我肯定这不是Strings能够做到的。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-24 12:30
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by Climbing at 2008-6-24 12:30:
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。

请问,你的X.bat该如何 ...

可以肯定地回答,可以。
结果就是"c:\"

运行结果看下图。



只要你自己试试strings就知道了。呵呵。
假如试过不行的话,我写出那两行命令。



Windows 一键还原
http://www.yjhy.com
2008-6-24 12:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by Climbing at 2008-6-24 12:30:
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。

请问,你的X.bat该如何 ...

引用 “看问题不能凭想象,实践才能出真知。 ”, 呵呵。



Windows 一键还原
http://www.yjhy.com
2008-6-24 12:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 13 楼』:  

嗯,我知道了:
strings filedrive %0
strings filedir %0

其实,还可以用:fpath %0
但要提取出来,也得配合其它的程序了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-6-24 13:39
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
winlong102
初级用户





积分 35
发帖 14
注册 2008-4-28
状态 离线
『第 14 楼』:  

我的帖子引发了两大高手的争论
我觉得很有成就感

2008-6-25 12:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 15 楼』:  

可以考虑分别不用strings
分别用
dir /s/b %0

for %%p in (%path%) do dir /b %%p.\%0
探测
应该能得到绝大数情况下的批处理所在路径

至于如果将标准输出转存至环境变量
那可利用的方法有很多
就不多讨论了

2008-6-25 21:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: