![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-19 12:28 |
共 47,814 主题排行 / 349,908 发帖 / 今日 0 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » (已解决)如何在dos下获得当前批处理所在的路径? |
| 可打印版本 2,746 / 18 |
| 第1楼 winlong102 | 发表于 2008-06-23 00:24 |
| 初级用户 发帖 14 积分 35 | |
|
(已解决)如何在dos下获得当前批处理所在的路径? 如何在dos下获得当前批处理所在的路径?我试过 %~dp0无效。
谢谢 [ Last edited by winlong102 on 2008-6-23 at 10:08 PM ] |
|
| 第2楼 thirteen | 发表于 2008-06-23 02:36 |
| 初级用户 发帖 29 积分 58 来自 地狱十九重 | |
|
我用有效啊
|
|
| 第3楼 Climbing | 发表于 2008-06-23 08:33 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
这个,似乎纯DOS没有提供类似的功能。
fpath是一个在纯DOS下找可执行程序路径的程序,但似乎只适合在搜索路径中查找。 |
|
| 第4楼 lixin12345 | 发表于 2008-06-23 08:54 |
| 初级用户 发帖 13 积分 27 | |
|
不知道你是不是这个意思?试试这个看看是否符合你的要求:
@echo off echo 当前路径是:%cd% echo 当前盘符是:%cd:~0,1% pause |
|
| 第5楼 winlong102 | 发表于 2008-06-23 11:18 |
| 初级用户 发帖 14 积分 35 | |
|
谢谢上面所有人的答复 我说得是dos 不是cmd,呵呵
应该 纯DOS没有提供类似的功能 |
|
| 第6楼 lianjiang2004 | 发表于 2008-06-23 18:07 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
借助第三方工具。
比如strings等 |
|
| 第7楼 winlong102 | 发表于 2008-06-23 21:57 |
| 初级用户 发帖 14 积分 35 | |
|
呵呵 感谢 lianjiang答复。
|
|
| 第8楼 Climbing | 发表于 2008-06-23 22:27 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
用strings只是提取路径中的盘符,并不等于能够得到批处理的运行路径。
|
|
| 第9楼 lianjiang2004 | 发表于 2008-06-24 07:37 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by Climbing at 2008-6-23 22:27: 既可提取盘符,也可提取目录。 两个参数一起用就可得到完整路径。 |
|
| 第10楼 Climbing | 发表于 2008-06-24 12:30 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。 请问,你的X.bat该如何写才能得到自己本身所在的路径? 我肯定这不是Strings能够做到的。 |
|
| 第11楼 lianjiang2004 | 发表于 2008-06-24 12:56 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by Climbing at 2008-6-24 12:30: 可以肯定地回答,可以。 结果就是"c:\" 运行结果看下图。 ![]() 只要你自己试试strings就知道了。呵呵。 假如试过不行的话,我写出那两行命令。 |
|
| 第12楼 lianjiang2004 | 发表于 2008-06-24 12:59 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by Climbing at 2008-6-24 12:30: 引用 “看问题不能凭想象,实践才能出真知。 ”, 呵呵。 |
|
| 第13楼 Climbing | 发表于 2008-06-24 13:39 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
嗯,我知道了:
strings filedrive %0 strings filedir %0 其实,还可以用:fpath %0 但要提取出来,也得配合其它的程序了。 |
|
| 第14楼 winlong102 | 发表于 2008-06-25 12:12 |
| 初级用户 发帖 14 积分 35 | |
|
我的帖子引发了两大高手的争论
我觉得很有成就感 |
|
| 第15楼 qzwqzw | 发表于 2008-06-25 21:55 |
| 银牌会员 发帖 636 积分 2,343 | |
|
可以考虑分别不用strings
分别用 dir /s/b %0 和 for %%p in (%path%) do dir /b %%p.\%0 探测 应该能得到绝大数情况下的批处理所在路径 至于如果将标准输出转存至环境变量 那可利用的方法有很多 就不多讨论了 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |