如何在MS-DOS中获取当前正在运行的批处理作业的路径?
我在目录 d:\progs\
中有一个批处理 foo.bar
。
在这个目录中,我有一个名为 bar.jar
的 jar 文件。
我已将 d:\progs\ 添加到我的 Path 环境变量中。
现在我执行cd c:\anotherdir
。 在这个新目录中,我执行foo -v
。但我收到以下错误: 无法访问 jarfile bar.jar
由于 %CD% 返回 c:\anotherdir
,我如何获取 foo.bar
的当前路径?
I have a batch foo.bar
in a directory d:\progs\
.
In this directory I have a jar file called bar.jar
.
I have added d:\progs\
to my Path environment variable.
Now i do cd c:\anotherdir
.
In this new dir i do foo -v
. But i get the following error :Unable to access jarfile bar.jar
How can i get the current path of foo.bar
since %CD% returns c:\anotherdir
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这只会影响启动程序,对传递给程序的参数(例如数据文件和文档)没有帮助。
使用
%CD%
捕获当前文件夹,从而在更改目录之前构建数据文件的路径。That only affects launching programs, it doesn't help with arguments (eg. data files and documents) passed to the program.
Use
%CD%
to capture the current folder, and thus build the data file's path before changing directory.您要查找的代码段是
%~dp0
。它为您提供 当前运行的批处理作业的路径。这还有一个优点是允许您从任何位置运行命令,而在批处理脚本开头捕获
%CD%
将捕获您启动批处理脚本时所在的目录。 (但是,如果这是您想要做的事情,那么这将是首选解决方案,如理查德。)The code snippet you're looking for is
%~dp0
. It gives you the path of the currently running batch job.This also has the advantage of allowing you to run the command from any location, whereas capturing
%CD%
in the beginning of your batch script will capture the directory that you were in when you started the batch script. (If this is what you want to do, however, that would be the preferred solution, as suggested by Richard.)