标题: (已解决)如何在dos下获得当前批处理所在的路径?
[打印本页]
作者: winlong102
时间: 2008-6-23 00:24
标题: (已解决)如何在dos下获得当前批处理所在的路径?
如何在dos下获得当前批处理所在的路径?我试过 %~dp0无效。
谢谢
Last edited by winlong102 on 2008-6-23 at 10:08 PM ]
作者: thirteen
时间: 2008-6-23 02:36
我用有效啊
作者: Climbing
时间: 2008-6-23 08:33
这个,似乎纯DOS没有提供类似的功能。
fpath是一个在纯DOS下找可执行程序路径的程序,但似乎只适合在搜索路径中查找。
作者: lixin12345
时间: 2008-6-23 08:54
不知道你是不是这个意思?试试这个看看是否符合你的要求:
@echo off
echo 当前路径是:%cd%
echo 当前盘符是:%cd:~0,1%
pause
作者: winlong102
时间: 2008-6-23 11:18
谢谢上面所有人的答复 我说得是dos 不是cmd,呵呵
应该 纯DOS没有提供类似的功能
作者: lianjiang2004
时间: 2008-6-23 18:07
借助第三方工具。
比如strings等
作者: winlong102
时间: 2008-6-23 21:57
呵呵 感谢 lianjiang答复。
作者: Climbing
时间: 2008-6-23 22:27
用strings只是提取路径中的盘符,并不等于能够得到批处理的运行路径。
作者: lianjiang2004
时间: 2008-6-24 07:37
Originally posted by Climbing at 2008-6-23 22:27:
用strings只是提取路径中的盘符,并不等于能够得到批处理的运行路径。
既可提取盘符,也可提取目录。
两个参数一起用就可得到完整路径。
作者: Climbing
时间: 2008-6-24 12:30
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。
请问,你的X.bat该如何写才能得到自己本身所在的路径?
我肯定这不是Strings能够做到的。
作者: lianjiang2004
时间: 2008-6-24 12:56
Originally posted by Climbing at 2008-6-24 12:30:
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。
请问,你的X.bat该如何 ...
可以肯定地回答,可以。
结果就是"c:\"
运行结果看下图。
只要你自己试试strings就知道了。呵呵。
假如试过不行的话,我写出那两行命令。
作者: lianjiang2004
时间: 2008-6-24 12:59
Originally posted by Climbing at 2008-6-24 12:30:
假设我的批处理是c:\x.bat(C盘的当前目录是c:\),而我的当前盘及当前目录是:d:\test,那么我用下面的命令行运行:
c:x.bat。
请问,你的X.bat该如何 ...
引用 “看问题不能凭想象,实践才能出真知。 ”, 呵呵。
作者: Climbing
时间: 2008-6-24 13:39
嗯,我知道了:
strings filedrive %0
strings filedir %0
其实,还可以用:fpath %0
但要提取出来,也得配合其它的程序了。
作者: winlong102
时间: 2008-6-25 12:12
我的帖子引发了两大高手的争论
我觉得很有成就感
作者: qzwqzw
时间: 2008-6-25 21:55
可以考虑分别不用strings
分别用
dir /s/b %0
和
for %%p in (%path%) do dir /b %%p.\%0
探测
应该能得到绝大数情况下的批处理所在路径
至于如果将标准输出转存至环境变量
那可利用的方法有很多
就不多讨论了
作者: Climbing
时间: 2008-6-26 10:32
Originally posted by qzwqzw at 2008-6-25 21:55:
可以考虑分别不用strings
分别用
dir /s/b %0
和
for %%p in (%path%) do dir /b %%p.\%0
探测
应该能得到绝大数情况下的批处理所在路径
至于如果将标准输出 ...
我们上面讨论中考虑的特殊情况就是批处理既不在搜索路径中,也不在当前盘上的情况,你的方案正好无法解决所有这些特殊情况。
作者: qzwqzw
时间: 2008-6-26 14:05
实践啊,实践!
是你忘了,还是我忘了?
dir /s/b %0 难道不能解决不在当前盘的情况?
作者: Climbing
时间: 2008-6-26 14:30
如果有多个同名文件如何?
作者: qzwqzw
时间: 2008-7-1 11:44
只取第一行结果就不会有同名文件的问题了
这比取多行结果要简单许多